3

J'utilise Azure AD pour authentifier les utilisateurs. Je souhaite ajouter quelques revendications utilisateur spécifiques à mon application. Devrais-je le faire dans Application_PostAuthenticateRequest` dans global.asax? Y a-t-il un moyen de mettre en cache mes revendications aussi?Azure AD PostAuthentication ajouter des revendications

+0

Pouvez-vous nous en dire un peu plus sur votre application. Utilisez-vous WIF? Comment obtenez-vous et validez le jeton? –

Répondre

3

Si vous utilisez le middleware ASP.NET OWIN, vous pouvez utiliser des notifications spécifiques à cette fin. Les réclamations ajoutées de cette manière se retrouveront dans votre cookie de session, de sorte que vous n'aurez pas à répéter la logique d'augmentation des demandes dans les appels suivants. Voir http://www.cloudidentity.com/blog/2015/08/26/augmenting-the-set-of-incoming-claims-with-the-openid-connect-and-oauth2-middleware-in-katana-3-x/ pour plus de détails.

0

BTW vous pouvez ajouter vos cliams personnalisés, mais vous ne pouvez pas remplacer les revendications existantes ajoutées par l'Azure AD (ce que j'ai vu jusqu'à présent pourrait être je me trompe). ce que vous pouvez faire est d'ajouter les nouvelles cliams comme ceci AuthorizationCodeReceived = context => { List<System.Security.Claims.Claim> allcustomClaims = new List<System.Security.Claims.Claim>(); allcustomClaims.Add(new System.Security.Claims.Claim("customClaim", "YourDefindedValue")); context.AuthenticationTicket.Identity.AddClaims(allcustomClaims); return Task.FromResult(0); } et alors vous pouvez obtenir la réclamation n'importe où dans le contrôleur comme `@ { var claimsIdentity = User.Identity comme System.Security.Claims.ClaimsIdentity;

if (claimsIdentity != null) 
{ 
    var c = claimsIdentity.FindFirst("customClaim").Value; 
} 

} `merci

0

Vous pouvez augmenter les demandes par programme comme celui-ci:

public async Task<ActionResult> AuthenticateAsync() 
    { 
     ClaimsPrincipal incomingPrincipal = System.Threading.Thread.CurrentPrincipal as ClaimsPrincipal; 
     if (incomingPrincipal != null && incomingPrincipal.Identity.IsAuthenticated == true) 
     { 
      ClaimsIdentity claimsIdentity = incomingPrincipal.Identity as ClaimsIdentity; 

      if (!claimsIdentity.HasClaim(ClaimTypes.Role, "Admin")) 
      { 
       claimsIdentity.AddClaim(new Claim(ClaimTypes.Role, "Admin", ClaimValueTypes.String, "AADGuide")); 
       var ctx = Request.GetOwinContext(); 
       var authenticationManager = ctx.Authentication; 

       AuthenticateResult authResult = await authenticationManager.AuthenticateAsync(CookieAuthenticationDefaults.AuthenticationType); 
       authenticationManager.SignIn(authResult.Properties,claimsIdentity); 
      } 

     } 
     return RedirectToAction("Index", "Start"); 

    } 

Cette solution repose sur la méthode AuthenticationAsync de AuthenticationManager pour récupérer le AuthenticationProperties d'origine. Après avoir récupéré les propriétés, appelez la méthode SignIn pour conserver le nouveau ClaimsIdentity dans le cookie d'authentification.