[英]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.