我们使用 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(使用前将#替换为@)