2010-03-28 24 views
1

Je suis capable d'authentifier l'utilisateur en utilisant ADFS et réussi à obtenir l'alias de l'utilisateur en utilisant l'instruction ci-dessous. Depuis un certain temps, je cherche un moyen d'obtenir les autres revendications de l'utilisateur authentifié, comme l'email, le nom, les rôles, le nom d'utilisateur, etc.Comment obtenir d'autres revendications de l'utilisateur utilisant ADFS?

Toute aide à ce sujet serait appréciée.

chaîne alias = ((MicrosoftAdfsProxyRP.MicrosoftPrincipal) HttpContext.Current.User) .Alias;

Response.Write (alias);

Répondre

2

La manière d'obtenir les autres revendications est la suivante.

IClaimsPrincipal claimsPr = (IClaimsPrincipal) (HttpContext.Current.User) À partir du principe des revendications, vous pouvez obtenir le ClaimsIdentityCollection via IClaimsIdentity. Extrait l'IClaimsIdentity des revendicationsPr.Identifies.

Inspectez ensuite toutes les revendications présentes dans IClaimsIdentity à l'aide de la propriété Claims.

+0

J'ai essayé votre code, mais dans mon application.Below est le code que j'ajouté à l'application alias string = ((MicrosoftAdfsProxyRP.MicrosoftPrincipal) HttpContext .Current.User) .Alias; Microsoft.IdentityModel.Claims.IClaimsPrincipal claimsPr = (IClaimsPrincipal) (HttpContext.Current.User); ClaimsIdentityCollection lst = claimsPr.Identities; J'obtiens l'erreur suivante Impossible de convertir l'objet de type 'MicrosoftAdfsProxyRP.MicrosoftPrincipal' pour taper 'Microsoft.IdentityModel.Claims.IClaimsPrincipal'. Faites-moi savoir une solution pour cela. Merci d'avance – stackuser1

2

Vous posez une question sur un service et une interface Microsoft internes. Essayez d'envoyer par courriel l'alias msftadfsproxydisc avec votre question.

2

Jetez un oeil à How to: Access Claims in an ASP.NET Page.

Juste au cas où le lien disparaît, la clé est:

void Page_Load(object sender, EventArgs e) 
{ 
    // Cast the Thread.CurrentPrincipal 
    IClaimsPrincipal icp = Thread.CurrentPrincipal as IClaimsPrincipal; 

    // Access IClaimsIdentity which contains claims 
    IClaimsIdentity claimsIdentity = (IClaimsIdentity)icp.Identity; 

    // Access claims 
    foreach(Claim claim in claimsIdentity.Claims) 
    { 
     Response.Write(claim.ClaimType) + "<BR>"; 
     Response.Write(claim.Value) + "<BR>"; 
     Response.Write(claim.ValueType) + "<BR>"; 
    } 
}