2016-08-01 3 views
1

Я пытаюсь добавить аутентификацию с использованием Azure AD B2C в веб-формы приложение. К сожалению, каждый учебник, который я нашел, предназначен для MVC, за исключением this web forms tutorial. С помощью этого учебника, я добавил этот код в мой startup.auth.cs:Аутентификация веб-форм с помощью B2C

public partial class Startup { 

    // For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301883 
    public void ConfigureAuth(IAppBuilder app) 
    { 
     app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType); 

     app.UseCookieAuthentication(new CookieAuthenticationOptions()); 

     app.UseOpenIdConnectAuthentication(
      new OpenIdConnectAuthenticationOptions 
      { 
       ClientId = "my-client-id", 
       Authority = "https://login.microsoftonline.com/my-tenant" 
      }); 
    } 
} 

И это работает отлично. Тем не менее, мне нужно иметь функциональность регистрации, а также только вход в систему, но я не могу понять, как это сделать, поскольку все, что я нашел для MVC, и я не уверен, как преобразовать его в Что мне нужно. Я попытался добавить такой код, как это:

app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(_SignUpPolicyId)); 
app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(_ProfilePolicyId)); 
app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(_SignInPolicyId)); 

И что создает еще три кнопки на странице входа, но при нажатии на них просто дает ошибку 404 и никакой дополнительной информации, так что я не знаю, как сделайте эту работу, или, даже если я пойду в правильном направлении. Я никогда не работал с B2C раньше, поэтому, если у кого-то есть какие-либо предложения/сделал такие вещи для веб-форм, я бы очень признателен за некоторые советы или примеры кода.

ответ

1

Пример вы используете, с помощью «локальных учетных записей» enter image description here

локальных учетных записей означают локальную базу данных, и для каждого поставщика Idenity это добавит кнопку.

Попытайтесь изменить аутентификацию на «Нет аутентификации» (и добавить все файлы самостоятельно) или «Рабочие и школьные учетные записи» (которая подключается к AD, поэтому преобразуйте ее в B2C).

Вы увидите редирект на https://login.microsoftonline.com/yourtenant.onmicrosoft.com/ ....

Следующие шаги должны выполнить те же действия, как и в примере MVC, реализовать одни и те же фрагменты кода.

Убедитесь, что обновление пакетов NuGet до новой версии (1.0 и 4.0 являются по умолчанию):

<package 
    id="Microsoft.IdentityModel.Protocol.Extensions" 
    version="1.0.2.206221351" 
    targetFramework="net46" /> 
<package 
    id="System.IdentityModel.Tokens.Jwt" 
    version="4.0.2.206221351" 
    targetFramework="net46" /> 

И код:

public void ConfigureAuth(IAppBuilder app) 
    { 
     app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType); 

     app.UseCookieAuthentication(new CookieAuthenticationOptions()); 

     app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(signInPolicyId)); 
    } 

private OpenIdConnectAuthenticationOptions CreateOptionsFromPolicy(string policy) 
    { 

     return new OpenIdConnectAuthenticationOptions 
     { 
      MetadataAddress = string.Format(aadInstance, tenant, policy), 
      AuthenticationType = policy, 

      ClientId = clientId, 
      RedirectUri = "https://localhost:44300/", 
      PostLogoutRedirectUri = redirectUri, 
      Notifications = new OpenIdConnectAuthenticationNotifications 
      { 
      }, 

      Scope = "openid", 
      ResponseType = "id_token", 

      TokenValidationParameters = new TokenValidationParameters 
      { 
       NameClaimType = "name", 
      }, 
     }; 
    } 

Добавить в /Account/SignIn.aspx страницы, а в коде позади код из образца MVC. Sign In:

if (!Request.IsAuthenticated) 
     {     
      // To execute a policy, you simply need to trigger an OWIN challenge. 
      // You can indicate which policy to use by adding it to the AuthenticationProperties using the 
      // PolicyKey provided. 
      HttpContext.Current.GetOwinContext().Authentication.Challenge(
       new AuthenticationProperties() 
       { 
        RedirectUri = "/", 
       }, 
       appConfiguration.B2CSignInPolicyId); 
     } 
+0

В итоге я переключил проект на MVC, потому что al l Остальные наши сайты сделаны с MVC, поэтому мы решили, что это тоже должно быть. Таким образом, я фактически не проверял ваш ответ, потому что это уже не актуально, но я ценю, что вы тратите время, поэтому я все равно соглашусь, чтобы этот вопрос был разрешен. Благодаря! – issharp

+0

Я ценю комментарий – Danrex

Смежные вопросы