OpenIddict
加入自定义 handler
options.AddEventHandler < OpenIddict.Server.OpenIddictServerEvents.HandleIntrospectionRequest > (notification =>
{
var context = notification.Context;
if(context.Claims.ContainsKey(OpenIdConnectConstants.Claims.Role))
{
context.Claims[OpenIdConnectConstants.Claims.Role] = new OpenIdConnectParameter(new []
{
"admin", "user"
}); //Exception in internal processing
/*
result:
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware: Error: An unhandled exception has occurred while executing the request.
System.Threading.Tasks.TaskCanceledException: A task was canceled.
at AspNet.Security.OpenIdConnect.Server.OpenIdConnectServerHandler.SendPayloadAsync(OpenIdConnectResponse response)
at AspNet.Security.OpenIdConnect.Server.OpenIdConnectServerHandler.SendIntrospectionResponseAsync(OpenIdConnectResponse response)
at AspNet.Security.OpenIdConnect.Server.OpenIdConnectServerHandler.InvokeIntrospectionEndpointAsync()
at AspNet.Security.OpenIdConnect.Server.OpenIdConnectServerHandler.HandleRequestAsync()
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
*/
//context.Claims.Add(OpenIdConnectConstants.Claims.Role, "user"); //Exception: System.ArgumentException: "An item with the same key has already been added. Key: role"
}
return Task.FromResult(OpenIddict.Server.OpenIddictServerEventState.Unhandled);
});