如何从 .Net Core MVC 中的 OpenIdConnect 令牌响应中提取状态参数

2024-05-02

我们使用 Azure b2c 来处理 .net core MVC 站点上的登录。 我们想使用可选的state参数来保存对站点的初始请求之间的某些数据/值(该值可能位于查询字符串参数中),然后将其发送到 b2c 进行登录,并成功登录返回到站点。 OpenIDConnect 允许在请求中设置此状态值,并将其与令牌响应一起传回。

看来设置这个值还是比较简单的;在里面OnRedirectToIdentityProvider事件在OpenIdConnectOptions像这样:

public Task OnRedirectToIdentityProvider(RedirectContext context){
   ...   
   context.ProtocolMessage.SetParameter("state", "mystatevalue");
   ...
}

但是,我不知道如何在返回用户时再次取回该值。

我可以看到OnTicketReceived事件被击中,这有一个TicketReceivedContext其中有一个Form财产与state其中的值,但这仍然是加密的。

我可以从哪里取回未加密的值?

我查看了 b2c 的 Azure 文档,但找不到这方面的示例。

thanks


设法通过使用来使其工作OnTokenValidated事件。 这样就可以得到未加密的参数,如下所示。

...//first set up the new event
options.Events = new OpenIdConnectEvents()
{
    ...
    OnTokenValidated = OnTokenValidated
};
...

private Task OnTokenValidated(TokenValidatedContext tokenValidatedContext)
{
    var stateValue = tokenValidatedContext.ProtocolMessage.GetParameter("state");
    if (stateValue != null)
    {
        //do something with that value..
    }
    return Task.CompletedTask;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 .Net Core MVC 中的 OpenIdConnect 令牌响应中提取状态参数 的相关文章

随机推荐