我有一个MVC Core 2.1应用程序,并且正在使用Azure AD B2C(2.1.1)作为身份提供程序。
我想在用户登录和注销时调用一个函数,并且猜测我需要将其放入中间件中。
在以前的AD B2C版本中,有一个功能:
app.UseOpenIdConnectAuthentication(options);
具有使通知功能可用的选项:
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthenticationFailed = this.AuthenticationFailed,
RedirectToIdentityProvider = this.OnRedirectToIdentityProvider
}
app.UseOpenIdConnectAuthentication(options);
函数现在已标记为过时。
我可以这样调用中间件:
app.Use((context, next) =>
{
if(/*context handler referrer includes "B2C_1_SignUpPolicy"*/)
{
// User has signed-in
}
return next.Invoke();
}
…,但这会为每个请求调用,并且不能适应在用户注销时也调用一个函数。
那我应该设置app.UseAuthentication();
版本的通知吗?
答案 0 :(得分:0)
我已经在GitHub为ASP.NET Core 2.1 Web应用程序创建了一个代码示例,该示例使用Azure AD B2C的ASP.NET Core 2.1身份验证中间件针对Azure AD B2C对最终用户进行身份验证,并获取了使用MSAL.NET访问令牌,并使用此访问令牌访问Web API。
它通过handling the OpenIdConnectOptions.Events.OnAuthorizationCodeReceived
event获取访问令牌。
您也许可以开发类似的代码来处理另一个OpenIdConnectOptions.Events
事件。