Minor update in OpenIdConnectHandler and Options
1. Default post sign out uri to the root of the applciation; 2. Throw ArgumentNullException for null context in HandleSignOutAsync; 3. Guard null from Unprotected; 4. Clean up code
This commit is contained in:
parent
ed6984fab5
commit
c5509fb594
|
|
@ -73,10 +73,8 @@ namespace Microsoft.AspNetCore.Authentication.OpenIdConnect
|
||||||
{
|
{
|
||||||
return await HandleSignOutCallbackAsync();
|
return await HandleSignOutCallbackAsync();
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
return await base.HandleRequestAsync();
|
||||||
return await base.HandleRequestAsync();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual async Task<bool> HandleRemoteSignOutAsync()
|
protected virtual async Task<bool> HandleRemoteSignOutAsync()
|
||||||
|
|
@ -156,7 +154,7 @@ namespace Microsoft.AspNetCore.Authentication.OpenIdConnect
|
||||||
{
|
{
|
||||||
if (context == null)
|
if (context == null)
|
||||||
{
|
{
|
||||||
return;
|
throw new ArgumentNullException(nameof(context));
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger.EnteringOpenIdAuthenticationHandlerHandleSignOutAsync(GetType().FullName);
|
Logger.EnteringOpenIdAuthenticationHandlerHandleSignOutAsync(GetType().FullName);
|
||||||
|
|
@ -168,9 +166,9 @@ namespace Microsoft.AspNetCore.Authentication.OpenIdConnect
|
||||||
|
|
||||||
var message = new OpenIdConnectMessage()
|
var message = new OpenIdConnectMessage()
|
||||||
{
|
{
|
||||||
IssuerAddress = _configuration == null ? string.Empty : (_configuration.EndSessionEndpoint ?? string.Empty),
|
IssuerAddress = _configuration?.EndSessionEndpoint ?? string.Empty,
|
||||||
|
|
||||||
// Redirect back of SigneOutCallbackPath first before user agent is redirected to actual post logout redirect uri
|
// Redirect back to SigneOutCallbackPath first before user agent is redirected to actual post logout redirect uri
|
||||||
PostLogoutRedirectUri = BuildRedirectUriIfRelative(Options.SignedOutCallbackPath)
|
PostLogoutRedirectUri = BuildRedirectUriIfRelative(Options.SignedOutCallbackPath)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -268,14 +266,13 @@ namespace Microsoft.AspNetCore.Authentication.OpenIdConnect
|
||||||
if (Request.Query.TryGetValue("State", out protectedState))
|
if (Request.Query.TryGetValue("State", out protectedState))
|
||||||
{
|
{
|
||||||
var properties = Options.StateDataFormat.Unprotect(protectedState);
|
var properties = Options.StateDataFormat.Unprotect(protectedState);
|
||||||
if (!string.IsNullOrEmpty(properties.RedirectUri))
|
if (!string.IsNullOrEmpty(properties?.RedirectUri))
|
||||||
{
|
{
|
||||||
Response.Redirect(properties.RedirectUri);
|
Response.Redirect(properties.RedirectUri);
|
||||||
return Task.FromResult(true);
|
return Task.FromResult(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Response.Redirect("/");
|
|
||||||
return Task.FromResult(true);
|
return Task.FromResult(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
|
||||||
using System.IdentityModel.Tokens.Jwt;
|
using System.IdentityModel.Tokens.Jwt;
|
||||||
using Microsoft.AspNetCore.Authentication;
|
using Microsoft.AspNetCore.Authentication;
|
||||||
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
|
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
|
||||||
|
|
@ -130,8 +129,8 @@ namespace Microsoft.AspNetCore.Builder
|
||||||
/// The uri where the user agent will be returned to after application is signed out from the identity provider.
|
/// The uri where the user agent will be returned to after application is signed out from the identity provider.
|
||||||
/// The redirect will happen after the SignedOutCallbackPath is invoked.
|
/// The redirect will happen after the SignedOutCallbackPath is invoked.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>This URI is optional and it can be out of the application's domain.</remarks>
|
/// <remarks>This URI can be out of the application's domain. By default it points to the root.</remarks>
|
||||||
public string PostLogoutRedirectUri { get; set; }
|
public string PostLogoutRedirectUri { get; set; } = "/";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets if a metadata refresh should be attempted after a SecurityTokenSignatureKeyNotFoundException. This allows for automatic
|
/// Gets or sets if a metadata refresh should be attempted after a SecurityTokenSignatureKeyNotFoundException. This allows for automatic
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue