OpenIdConnectEvents 如何被覆盖?

问题描述 投票:0回答:1

下面是源代码: https://source.dot.net/#Microsoft.AspNetCore.Authentication.OpenIdConnect/OpenIdConnectHandler.cs,1288

其中

await Events.AuthorizationCodeReceived(context);
必须与反向通道中的访问代码交换授权码,但是根据
OpenIdConnectEvents
的源代码:

https://source.dot.net/#Microsoft.AspNetCore.Authentication.OpenIdConnect/Events/OpenIdConnectEvents.cs

public class OpenIdConnectEvents : RemoteAuthenticationEvents
{
    public Func<AuthorizationCodeReceivedContext, Task> OnAuthorizationCodeReceived { get; set; } = 
        context => Task.CompletedTask;
    // ...
}

它什么也不做,只是返回

Task.CompletedTask
,所以这个
OnAuthorizationCodeReceived
事件必须在某个地方被覆盖,但我看不到它在哪里被覆盖?我们用户当然不能每次使用openid connect都直接写。

c# .net asp.net-core oauth-2.0 openid-connect
1个回答
0
投票

OnAuthorizationCodeReceived
只是事件标志。它不处理代码和访问令牌的交换。

await Events.AuthorizationCodeReceived(context);
只是
RunAuthorizationCodeReceivedEventAsync
方法中操作的一部分。

您可以检查此方法上面的描述,该方法应该处理令牌交换:

RedeemAuthorizationCodeAsync
https://source.dot.net/#Microsoft.AspNetCore.Authentication.OpenIdConnect/OpenIdConnectHandler.cs,987

您还可以检查

HandleRemoteAuthenticateAsync
下运行“代码流”整个过程的这部分代码:包括获取代码和兑换令牌的代码。 https://source.dot.net/#Microsoft.AspNetCore.Authentication.OpenIdConnect/OpenIdConnectHandler.cs,810

© www.soinside.com 2019 - 2024. All rights reserved.