我有一个 ASP.NET Core Web 应用和一个 Azure AD B2C 租户。
在 View 中,我可以按以下样式制作按钮条目,并且一切正常:
<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帐户” Controller 的任何文档吗?
最佳答案
您可以创建自定义帐户 Controller ,以便在登录页面上向用户显示注册链接并路由到相应的操作。检查以下代码以供引用 -
[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 SignUp Options的方法 -
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 = "/";
};
关于asp.net - Azure AD B2C - ASP.NET Core 注册链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52175124/