繁体   English   中英

Azure AD B2C-ASP.NET Core注册链接

[英]Azure AD B2C - ASP.NET Core SignUp Link

我有一个ASP.NET Core Web App和一个Azure AD B2C租户。

在视图中,我可以按以下样式输入按钮,并且一切正常:

<ul class="nav navbar-nav navbar-right">
     <li><a asp-area="AzureADB2C" asp-controller="Account" asp-action="SignIn">Sign in</a></li>
     <li><a asp-area="AzureADB2C" asp-controller="Account" asp-action="EditProfile">Edit Profile</a></li>
     <li><a asp-area="AzureADB2C" asp-controller="Account" asp-action="ResetPassword">Reset Password</a></li>
     <li><a asp-area="AzureADB2C" asp-controller="Account" asp-action="SignOut">Sign out</a></li>
</ul>

并在网络应用程序appsettings.json中进行配置:

"AzureAdB2C": {
    "Instance": "https://login.microsoftonline.com/tfp/",
    "ClientId": "[...]",
    "CallbackPath": "/signin-oidc",
    "Domain": "[...]",
    "SignUpSignInPolicyId": "B2C_1_SignUpOrSignInPolicy",
    "ResetPasswordPolicyId": "B2C_1_PasswordResetPolicy",
    "EditProfilePolicyId": "B2C_1_ProfileEditPolicy"
  }

我想添加一个按钮条目以直接访问SignUpOrSignInPolicy的注册页面,但这不起作用:

<li><a asp-area="AzureADB2C" asp-controller="Account" asp-action="SignUp">Sign up</a></li>

我必须改变什么? 或是否有关于此“ AzureADB2C帐户”控制器的文档?

您可以创建一个自定义帐户控制器,以在登录页面上为用户提供“注册”链接,并路由至相应的操作。 检查以下代码以供参考-

[Route("[controller]/[action]")]
public class AccountController : Controller
{
    public IActionResult SignUp()
    {
        return this.Challenge(
            new AuthenticationProperties { RedirectUri = "/" }, "B2C_1_B2C_POC_SignUp");
    }
}

另外,通过添加“注册策略”的身份验证服务来修改StartUp.cs服务,如下所示:

services.AddAuthentication(AzureADB2CDefaults.AuthenticationScheme)
                .AddAzureADB2C(options => Configuration.Bind("AzureADB2C", options));
            services.AddAuthentication(options => options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme).AddOpenIdConnect("B2C_1_B2C_POC_SignUp", GetOpenIdSignUpOptions("B2C_1_B2C_POC_SignUp"))
                 .AddCookie(); 

这是上述代码中引用的添加OpenId注册选项的方法-

private Action<OpenIdConnectOptions> GetOpenIdSignUpOptions(string policy)
            => options =>
            {
                options.MetadataAddress =
                   "https://login.microsoftonline.com/abc.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=" + policy;
                options.ClientId = "xxxxxxxxxx";//this.ClientId;
                options.ResponseType = OpenIdConnectResponseType.IdToken;
                options.SignedOutCallbackPath = "/signout/" + policy;
                options.CallbackPath = "/signin-oidc";
                options.SignedOutRedirectUri = "/";
            };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM