public async Task When_Pass_IdTokenHint_And_The_Subject_Matches_The_Authenticated_User_Then_Token_Is_Returned() { // GENERATE JWS InitializeFakeObjects(); _httpClientFactoryStub.Setup(h => h.GetHttpClient()).Returns(_server.Client); var payload = new JwsPayload { { "sub", "administrator" } }; payload.Add("aud", new[] { "http://localhost:5000" }); var jws = _jwsGenerator.Generate(payload, JwsAlg.RS256, _server.SharedCtx.SignatureKey); var jwe = _jweGenerator.GenerateJwe(jws, JweAlg.RSA1_5, JweEnc.A128CBC_HS256, _server.SharedCtx.EncryptionKey); // ACT var result = await _authorizationClient.ResolveAsync(baseUrl + "/.well-known/openid-configuration", new AuthorizationRequest(new[] { "openid", "api1" }, new[] { ResponseTypes.Code }, "authcode_client", "http://localhost:5000/callback", "state") { IdTokenHint = jwe, Prompt = "none" }); // ASSERT Assert.NotNull(result); Assert.False(result.ContainsError); }
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); }
public async Task <string> EncryptAsync(string jwe, JweAlg jweAlg, JweEnc jweEnc) { var jsonWebKey = await GetJsonWebKey( jweAlg.ToAllAlg(), KeyOperations.Encrypt, Use.Enc); if (jsonWebKey == null) { return(jwe); } return(_jweGenerator.GenerateJwe( jwe, jweAlg, jweEnc, jsonWebKey)); }