2016-11-07 2 views
2

Я искал пример, пытаясь найти пример того, как добавить аутентификацию ADFS в существующее приложение ASP.Net MVC. Я нашел много примеров того, как это сделать, используя мастер при создании нового приложения.ADFS с существующим ASP.Net MVC App

Я мог бы создать новое приложение и скопировать код и конфигурацию, но эти швы похожи на странный подход.

Кто-нибудь знает о хорошем путеводителе или ресурсе?

ответ

2

Мы нашли эту запись в блоге на Cloud Identity, чтобы быть действительно полезной, чтобы начать с чего-то подобного. Мы используем Web API, так что это не совсем то же самое.

Вам нужно будет добавить это в файл Startup.Auth.cs:

app.UseActiveDirectoryFederationServicesBearerAuthentication(
new ActiveDirectoryFederationServicesBearerAuthenticationOptions 
{ 
    Audience = ConfigurationManager.AppSettings["ida:Audience"], 
    MetadataEndpoint = ConfigurationManager.AppSettings["ida:MetadataEndpoint"] 
}); 

В вашем web.config вам нужно указать ключи к этим записям:

<add key="ida:AdfsMetadataEndpoint" value="https://adfs.yourdomain.com/federationmetadata/2007-06/federationmetadata.xml" /> 
    <add key="ida:Audience" value="https://yourmvc.yourdomain.com" /> 

Обратите внимание, что какая версия ADFS, которую вы используете, имеет большое значение. Мы обнаружили, что, пытаясь получить токены для работы с версией 3.0 ADFS, они в настоящее время несколько нарушены. В помещениях ADFS также будет работать намного иначе, чем Azure.

Нам нужно было настроить требования к нашей реализации, а сообщение this очень помогло. Startup.Auth.cs будет выглядеть примерно так:

app.UseWindowsAzureActiveDirectoryBearerAuthentication(
    new WindowsAzureActiveDirectoryBearerAuthenticationOptions 
    { 
     Audience = ConfigurationManager.AppSettings["ida:Audience"], 
     Tenant = ConfigurationManager.AppSettings["ida:Tenant"], 
     Provider = new OAuthBearerAuthenticationProvider() 
     { 
      OnValidateIdentity = async context => 
      { 
       context.Ticket.Identity.AddClaim(
        new Claim(http://mycustomclaims/hairlenght, 
            RetrieveHairLenght(userID),     
            ClaimValueTypes.Double, 
            "LOCAL AUTHORITY");)); 
      } 
     } 
    }); 
+0

Спасибо за это. Я получил эту работу, используя ваш пример и ссылку Cloud Identity. – Lee