#501 Replace OpenIdConnectTokenEndpointResponse with an OpenIdConnectMessage

This commit is contained in:
Chris R 2015-10-20 13:33:25 -07:00
parent 00c81d41aa
commit ef61b14d6a
5 changed files with 13 additions and 49 deletions

View File

@ -13,6 +13,6 @@ namespace Microsoft.AspNet.Authentication.OpenIdConnect
{ {
} }
public OpenIdConnectTokenEndpointResponse TokenEndpointResponse { get; set; } public OpenIdConnectMessage TokenEndpointResponse { get; set; }
} }
} }

View File

@ -17,8 +17,8 @@ namespace Microsoft.AspNet.Authentication.OpenIdConnect
} }
/// <summary> /// <summary>
/// Gets or sets the <see cref="OpenIdConnectTokenEndpointResponse"/> that contains the tokens and json response received after redeeming the code at the token endpoint. /// Gets or sets the <see cref="OpenIdConnectMessage"/> that contains the tokens received after redeeming the code at the token endpoint.
/// </summary> /// </summary>
public OpenIdConnectTokenEndpointResponse TokenEndpointResponse { get; set; } public OpenIdConnectMessage TokenEndpointResponse { get; set; }
} }
} }

View File

@ -497,7 +497,7 @@ namespace Microsoft.AspNet.Authentication.OpenIdConnect
var validationParameters = Options.TokenValidationParameters.Clone(); var validationParameters = Options.TokenValidationParameters.Clone();
validationParameters.ValidateSignature = false; validationParameters.ValidateSignature = false;
ticket = ValidateToken(tokenEndpointResponse.ProtocolMessage.IdToken, message, properties, validationParameters, out jwt); ticket = ValidateToken(tokenEndpointResponse.IdToken, message, properties, validationParameters, out jwt);
var nonce = jwt?.Payload.Nonce; var nonce = jwt?.Payload.Nonce;
if (!string.IsNullOrEmpty(nonce)) if (!string.IsNullOrEmpty(nonce))
@ -508,7 +508,7 @@ namespace Microsoft.AspNet.Authentication.OpenIdConnect
Options.ProtocolValidator.ValidateTokenResponse(new OpenIdConnectProtocolValidationContext() Options.ProtocolValidator.ValidateTokenResponse(new OpenIdConnectProtocolValidationContext()
{ {
ClientId = Options.ClientId, ClientId = Options.ClientId,
ProtocolMessage = tokenEndpointResponse.ProtocolMessage, ProtocolMessage = tokenEndpointResponse,
ValidatedIdToken = jwt, ValidatedIdToken = jwt,
Nonce = nonce Nonce = nonce
}); });
@ -527,13 +527,13 @@ namespace Microsoft.AspNet.Authentication.OpenIdConnect
if (Options.SaveTokensAsClaims) if (Options.SaveTokensAsClaims)
{ {
// Persist the tokens extracted from the token response. // Persist the tokens extracted from the token response.
SaveTokens(ticket.Principal, tokenEndpointResponse.ProtocolMessage, saveRefreshToken: true); SaveTokens(ticket.Principal, tokenEndpointResponse, saveRefreshToken: true);
} }
if (Options.GetClaimsFromUserInfoEndpoint) if (Options.GetClaimsFromUserInfoEndpoint)
{ {
Logger.LogDebug(22, "Sending request to user info endpoint for retrieving claims."); Logger.LogDebug(22, "Sending request to user info endpoint for retrieving claims.");
ticket = await GetUserInformationAsync(tokenEndpointResponse.ProtocolMessage, jwt, ticket); ticket = await GetUserInformationAsync(tokenEndpointResponse, jwt, ticket);
} }
return AuthenticateResult.Success(ticket); return AuthenticateResult.Success(ticket);
@ -618,7 +618,7 @@ namespace Microsoft.AspNet.Authentication.OpenIdConnect
/// <param name="authorizationCode">The authorization code to redeem.</param> /// <param name="authorizationCode">The authorization code to redeem.</param>
/// <param name="redirectUri">Uri that was passed in the request sent for the authorization code.</param> /// <param name="redirectUri">Uri that was passed in the request sent for the authorization code.</param>
/// <returns>OpenIdConnect message that has tokens inside it.</returns> /// <returns>OpenIdConnect message that has tokens inside it.</returns>
protected virtual async Task<OpenIdConnectTokenEndpointResponse> RedeemAuthorizationCodeAsync(string authorizationCode, string redirectUri) protected virtual async Task<OpenIdConnectMessage> RedeemAuthorizationCodeAsync(string authorizationCode, string redirectUri)
{ {
var openIdMessage = new OpenIdConnectMessage() var openIdMessage = new OpenIdConnectMessage()
{ {
@ -635,7 +635,7 @@ namespace Microsoft.AspNet.Authentication.OpenIdConnect
responseMessage.EnsureSuccessStatusCode(); responseMessage.EnsureSuccessStatusCode();
var tokenResonse = await responseMessage.Content.ReadAsStringAsync(); var tokenResonse = await responseMessage.Content.ReadAsStringAsync();
var jsonTokenResponse = JObject.Parse(tokenResonse); var jsonTokenResponse = JObject.Parse(tokenResonse);
return new OpenIdConnectTokenEndpointResponse(jsonTokenResponse); return new OpenIdConnectMessage(jsonTokenResponse);
} }
/// <summary> /// <summary>
@ -984,7 +984,7 @@ namespace Microsoft.AspNet.Authentication.OpenIdConnect
return authorizationCodeReceivedContext; return authorizationCodeReceivedContext;
} }
private async Task<TokenResponseReceivedContext> RunTokenResponseReceivedEventAsync(OpenIdConnectMessage message, OpenIdConnectTokenEndpointResponse tokenEndpointResponse) private async Task<TokenResponseReceivedContext> RunTokenResponseReceivedEventAsync(OpenIdConnectMessage message, OpenIdConnectMessage tokenEndpointResponse)
{ {
Logger.LogDebug(35, "Token response received."); Logger.LogDebug(35, "Token response received.");
var tokenResponseReceivedContext = new TokenResponseReceivedContext(Context, Options) var tokenResponseReceivedContext = new TokenResponseReceivedContext(Context, Options)
@ -1005,7 +1005,7 @@ namespace Microsoft.AspNet.Authentication.OpenIdConnect
return tokenResponseReceivedContext; return tokenResponseReceivedContext;
} }
private async Task<AuthenticationValidatedContext> RunAuthenticationValidatedEventAsync(OpenIdConnectMessage message, AuthenticationTicket ticket, OpenIdConnectTokenEndpointResponse tokenEndpointResponse) private async Task<AuthenticationValidatedContext> RunAuthenticationValidatedEventAsync(OpenIdConnectMessage message, AuthenticationTicket ticket, OpenIdConnectMessage tokenEndpointResponse)
{ {
var authenticationValidatedContext = new AuthenticationValidatedContext(Context, Options) var authenticationValidatedContext = new AuthenticationValidatedContext(Context, Options)
{ {

View File

@ -1,36 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.IdentityModel.Protocols.OpenIdConnect;
using Newtonsoft.Json.Linq;
namespace Microsoft.AspNet.Authentication.OpenIdConnect
{
/// <summary>
/// Class to store the response returned from token endpoint
/// </summary>
public class OpenIdConnectTokenEndpointResponse
{
public OpenIdConnectTokenEndpointResponse(JObject jsonResponse)
{
JsonResponse = jsonResponse;
ProtocolMessage = new OpenIdConnectMessage()
{
AccessToken = JsonResponse.Value<string>(OpenIdConnectParameterNames.AccessToken),
IdToken = JsonResponse.Value<string>(OpenIdConnectParameterNames.IdToken),
TokenType = JsonResponse.Value<string>(OpenIdConnectParameterNames.TokenType),
ExpiresIn = JsonResponse.Value<string>(OpenIdConnectParameterNames.ExpiresIn)
};
}
/// <summary>
/// OpenIdConnect message that contains the id token and access tokens
/// </summary>
public OpenIdConnectMessage ProtocolMessage { get; set; }
/// <summary>
/// Json response returned from the token endpoint
/// </summary>
public JObject JsonResponse { get; set; }
}
}

View File

@ -19,11 +19,11 @@ namespace Microsoft.AspNet.Authentication.Tests.OpenIdConnect
{ {
} }
protected override Task<OpenIdConnectTokenEndpointResponse> RedeemAuthorizationCodeAsync(string authorizationCode, string redirectUri) protected override Task<OpenIdConnectMessage> RedeemAuthorizationCodeAsync(string authorizationCode, string redirectUri)
{ {
var jsonResponse = new JObject(); var jsonResponse = new JObject();
jsonResponse.Add(OpenIdConnectParameterNames.IdToken, "test token"); jsonResponse.Add(OpenIdConnectParameterNames.IdToken, "test token");
return Task.FromResult(new OpenIdConnectTokenEndpointResponse(jsonResponse)); return Task.FromResult(new OpenIdConnectMessage(jsonResponse));
} }
protected override Task<AuthenticationTicket> GetUserInformationAsync(OpenIdConnectMessage message, JwtSecurityToken jwt, AuthenticationTicket ticket) protected override Task<AuthenticationTicket> GetUserInformationAsync(OpenIdConnectMessage message, JwtSecurityToken jwt, AuthenticationTicket ticket)