public async Task When_Using_ClientSecretJwtAuthentication_Then_AccessToken_Is_Returned() { // ARRANGE InitializeFakeObjects(); _httpClientFactoryStub.Setup(h => h.GetHttpClient()).Returns(_server.Client); var payload = new JwsPayload { { StandardClaimNames.Issuer, "jwt_client" }, { Core.Jwt.Constants.StandardResourceOwnerClaimNames.Subject, "jwt_client" }, { StandardClaimNames.Audiences, new [] { "http://localhost:5000" } }, { StandardClaimNames.ExpirationTime, DateTime.UtcNow.AddHours(1).ConvertToUnixTimestamp() } }; var jws = _jwsGenerator.Generate(payload, JwsAlg.RS256, _server.SharedCtx.SignatureKey); var jwe = _jweGenerator.GenerateJweByUsingSymmetricPassword(jws, JweAlg.RSA1_5, JweEnc.A128CBC_HS256, _server.SharedCtx.EncryptionKey, "jwt_client"); // ACT var token = await _clientAuthSelector.UseClientSecretJwtAuth(jwe, "jwt_client") .UseClientCredentials("api1") .ResolveAsync(baseUrl + "/.well-known/openid-configuration"); // ASSERTS Assert.NotNull(token); }
public async Task <string> ExecuteAsync(CreateJweParameter createJweParameter) { if (createJweParameter == null) { throw new ArgumentNullException(nameof(createJweParameter)); } if (string.IsNullOrWhiteSpace(createJweParameter.Url)) { throw new ArgumentNullException(nameof(createJweParameter.Url)); } if (string.IsNullOrWhiteSpace(createJweParameter.Jws)) { throw new ArgumentNullException(nameof(createJweParameter.Jws)); } if (string.IsNullOrWhiteSpace(createJweParameter.Kid)) { throw new ArgumentNullException(nameof(createJweParameter.Kid)); } Uri uri = null; if (!Uri.TryCreate(createJweParameter.Url, UriKind.Absolute, out uri)) { throw new IdentityServerManagerException( ErrorCodes.InvalidRequestCode, string.Format(ErrorDescriptions.TheUrlIsNotWellFormed, createJweParameter.Url)); } var jsonWebKey = await _jsonWebKeyHelper.GetJsonWebKey(createJweParameter.Kid, uri).ConfigureAwait(false); if (jsonWebKey == null) { throw new IdentityServerManagerException( ErrorCodes.InvalidRequestCode, string.Format(ErrorDescriptions.TheJsonWebKeyCannotBeFound, createJweParameter.Kid, uri.AbsoluteUri)); } var result = string.Empty; if (!string.IsNullOrWhiteSpace(createJweParameter.Password)) { result = _jweGenerator.GenerateJweByUsingSymmetricPassword(createJweParameter.Jws, createJweParameter.Alg, createJweParameter.Enc, jsonWebKey, createJweParameter.Password); } else { result = _jweGenerator.GenerateJwe(createJweParameter.Jws, createJweParameter.Alg, createJweParameter.Enc, jsonWebKey); } return(result); }