2016-11-07 1 views
2

J'ai regardé autour de moi, essayant de trouver un exemple d'ajout de l'authentification ADFS à une application ASP.Net MVC existante. J'ai trouvé beaucoup d'exemples de la façon de le faire en utilisant l'assistant lorsque vous créez une nouvelle application.ADFS avec l'application ASP.Net MVC existante

Je pourrais créer une nouvelle application et copier le code et la config over, mais cela ressemble à une approche étrange.

Est-ce que quelqu'un connaît un bon guide ou une bonne ressource?

Répondre

2

Nous avons trouvé cet article de blog sur Cloud Identity pour être vraiment utile pour commencer quelque chose de similaire. Nous utilisons l'API Web, donc ce n'est pas exactement la même chose.

Vous devrez ajouter à votre fichier Startup.Auth.cs:

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

Dans votre web.config, vous aurez besoin des clés pour pointer vers les entrées:

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

Notez que La version d'ADFS que vous utilisez fait une grande différence. Nous avons constaté que tout en essayant d'obtenir des jetons pour travailler avec la version 3.0 d'ADFS, ils sont quelque peu cassés en ce moment. Sur place, ADFS fonctionnera également différemment d'Azure.

Nous avions besoin de personnaliser les revendications pour notre implémentation et this poste aidé énormément. Startup.Auth.cs ressemblera à ceci:

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

Merci pour cette page. J'ai travaillé en utilisant votre exemple et le lien Cloud Identity. – Lee