Abrufen des tatsächlichen ursprünglichen Ausstellers eines Identitätsanspruchs in SharePoint 2010
Veröffentlichung des Originalartikels: 31.03.2011
Ich habe diese Aufgabe im vergangenen Jahr auf verschiedene Weisen ausgeführt, mich aber letztlich dazu entschlossen, Dinge auf „ordnungsgemäße“ Weise zu erledigen. Die Aufgabe ist einfach genug. Wenn Ihr benutzerdefinierter Anspruchsanbieter aufgerufen wird, z. B. während der Anspruchserweiterung, und Sie wissen möchten, um welche Art von Benutzer es sich handelt (Windows-, FBA- [formularbasierte Authentifizierung] oder SAML-Ansprüche), wie soll dann vorgegangen werden? Anstatt Ihnen die verschiedenen Möglichkeiten aufzuzeigen, wie ich dies in der Vergangenheit erledigt habe, hier nun ein Codeauszug, der für den „ordnungsgemäßen“ Weg steht.
//Den Anspruchsanbieter-Manager abrufen
SPClaimProviderManager cpm = SPClaimProviderManager.Local;
//Den aktuellen Benutzer abrufen, damit wir den „tatsächlichen“ ursprünglichen Aussteller erhalten
SPClaim curUser = SPClaimProviderManager.DecodeUserIdentifierClaim(entity);
//Den ursprünglichen Aussteller für den Benutzer abrufen
SPOriginalIssuerType loginType = SPOriginalIssuers.GetIssuerType(curUser.OriginalIssuer);
if (loginType == SPOriginalIssuerType.Windows)
{
//Für Windows
}
else if ((loginType == SPOriginalIssuerType.TrustedProvider) ||
(loginType == SPOriginalIssuerType.ClaimProvider))
{
//Für SAML
}
Ich finde diesen Code nicht besonders kompliziert, weshalb ich ihn nicht ausführlich kommentiert habe. In diesem Fall wurde der von der DecodeUserIdentifierClaim-Methode verwendete Entitätsparameter als Teil meiner Überschreibung von FillClaimsForEntity (d. h. Erweiterung von Ansprüchen) in meinem benutzerdefinierten Anspruchsanbieter übergeben. Die hier gezeigte Vorgehensweise sollte überall in einem benutzerdefinierten Anspruchsanbieter funktionieren.
Es handelt sich hierbei um einen übersetzten Blogbeitrag. Sie finden den ursprünglichen Artikel unter How to Get the Real Original Issuer for an Identity Claim in SharePoint 2010.