首页 > 解决方案 > 指定 B2C 策略(在 C# 中)的顺序是否重要?

问题描述

我正在将 B2C 集成到现有的 MVC Web 应用程序中。我已将以下代码部分以及 CreateOptionsFromPolicy 的代码添加到 Startup.Auth.cs 文件中:

app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(SignUpSignInPolicyId));
app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(EditProfilePolicyId));
app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(PasswordResetPolicyId));

每当我单击指定要使用的策略是 SignUpSignIn 策略的登录链接时,这会将我定向到 B2C 中的该策略。

public void SignIn()
{
    if (!Request.IsAuthenticated)
    {
        HttpContext.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = "/" }, Startup.SignUpSignInPolicyId);
    }
}

但是,如果我打开网站的 url,要求用户在未通过身份验证时进行身份验证,那么我将被定向到 PasswordReset 策略。

当我更改策略的顺序以使 SignUpSignIn 一个是 Startup.Auth.cs 中三个中的最后一个时,然后当我在未通过身份验证时单击同一链接时,我会根据需要定向到 SignUpSignIn 策略.

我的问题是,在 StartUp.Auth.cs 文件中指定这些策略的顺序是否重要?我在任何地方都没有发现任何文件表明情况如此。

或者,当当前没有经过身份验证的用户时,我是否可以在某个地方为所有/每个需要身份验证的操作指定使用哪个策略?

标签: c#azure-ad-b2c

解决方案


也许它与顺序无关,您可以尝试放在app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(EditProfilePolicyId));最后并测试,因为当您打开需要用户身份验证的网站的 url 时,您似乎被定向到最后一个三政策。对不起,我没有足够的声誉,所以我不能发表评论。如果我有任何进一步的发现,我会更新我的答案。


推荐阅读