Azure AD B2C - ссылка для регистрации ядра ASP.NET - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть 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?

1 Ответ

0 голосов
/ 12 сентября 2018

Вы можете создать собственный контроллер учетной записи, чтобы предоставить пользователю ссылку регистрации на странице входа в систему и направить к соответствующему действию. Проверьте ниже код для справки -

[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 = "/";
            };
...