Je développe une application MVC 4 à héberger dans Azure et souhaite utiliser son service ACS pour l'authentification. Une fois l'utilisateur authentifié, j'utiliserai les détails de la réclamation pour corréler mes enregistrements locaux. Par la suite, j'aimerais étendre l'ensemble de revendications pour inclure des revendications supplémentaires qui représentent les autorisations locales que ma demande utiliserait pour les décisions d'autorisation. Je suppose que j'ai besoin de remplacer le principe, mais je ne sais pas où et quand le faire dans MVC et je veux éviter de casser toute la plomberie d'authentification qui serait normalement utilisé pendant toute la durée de la session. Quelqu'un peut-il nous éclairer là-dessus?Extension des revendications Azure ACS pour les sessions MVC
Répondre
En plus de ce @Eugenio Pace a dit, il est intéressant de noter que vous pouvez simplement ajouter et supprimer des demandes en provenance et à l'IClaimsPrincipal
:
public static void UpdateClaims(IClaimsIdentity identity)
{
identity.Claims.Remove(identity.Claims.SingleOrDefault(x => x.ClaimType == ClaimTypes.Name));
identity.Claims.Remove(identity.Claims.SingleOrDefault(x => x.ClaimType == ClaimTypes.Email));
identity.Claims.Add(new Claim(ClaimTypes.Name, "Steve Smith"));
identity.Claims.Add(new Claim(ClaimTypes.Email, "[email protected]"));
}
UpdateClaims(User.Identity as IClaimsIdentity);
Revendications ajoutées peuvent être soit l'un des types énumérés dans ClaimTypes
ou une chaîne personnalisée de votre propre conception. Vous pouvez ajouter plusieurs revendications de type ClaimTypes.Role
- Je ne suis pas sûr des autres types.
Des ClaimsCollection
docs:
représente une collection des revendications associées à un seul sujet. L'ajout d'une revendication à ClaimCollection associe implicitement la revendication au sujet associé à la collection en appelant la méthode SetSubject . La suppression d'une revendication d'un ClaimCollection supprime implicitement cette association en appelant également la méthode SetSubject.
http://msdn.microsoft.com/en-us/library/microsoft.identitymodel.claims.claimcollection.aspx
Mise à jour
Pour 4,5 .Net, la classe d'identité et la méthode pour les demandes de mise à jour ont changé, ainsi que l'espace de noms:
using System.IdentityModel;
using System.Security.Claims;
public static void UpdateClaims(Member member, ClaimsIdentity identity)
{
identity.RemoveClaim(identity.Claims.SingleOrDefault(x => x.Type == ClaimTypes.Name));
identity.RemoveClaim(identity.Claims.SingleOrDefault(x => x.Type == ClaimTypes.Email));
identity.AddClaim(new Claim(ClaimTypes.Name, "Steve Smith"));
identity.AddClaim(new Claim(ClaimTypes.Email, "[email protected]"));
}
UpdateClaims(User.Identity as ClaimsIdentity);
http://msdn.microsoft.com/en-us/library/system.security.claims.claimsidentity.aspx
Le point d'extension dans WIF pour enrichir le ClaimSet est le ClaimsAuthenticationManager
De la documentation:
Le gestionnaire d'authentification des demandes fournit un point d'extensibilité dans le pipeline de traitement de RP que vous pouvez utiliser pour filtrer , modifiez ou injectez de nouvelles revendications dans l'ensemble des revendications présentées par un IClaimsPrincipal avant l'appel de l'application RP.
Vous pouvez également ajouter des règles dans ACS pour enrichir le jeton avec les revendications dont vous avez besoin.
- 1. Est-il possible d'obtenir des revendications ACS sans modifier web.config?
- 2. Comment transmettre les revendications requises au fournisseur d'identité OpenID avec Azure ACS?
- 3. AZURE ACS associant des identités à plusieurs connexions
- 4. Configuration Azure ACS pour Local et Production
- 5. Azure ACS + Custom STS, possible pour un scénario hybride?
- 6. Azure ACS multiplier URL de retour pour MVC WebAPI et Windows Store/Metro App
- 7. Azure ACS dans un projet PhoneGap
- 8. Azure ACS et stocker des informations pour les utilisateurs sur elle vs local?
- 9. Windows Azure ACS avec PingIdentity STS
- 10. appeler Windows Azure avec ACS Certificat
- 11. Azure ACS - Mise en œuvre des meilleures pratiques
- 12. Azure Java utilisant ACS filtre- comment?
- 13. WCF Sessions sur Windows Azure
- 14. Comment intégrer Azure ACS à un STS local (personnalisé)?
- 15. Performances du service de contrôle d'accès Azure AppFabric lors de la transformation des revendications
- 16. Windows Azure ACS: impossible de trouver l'assembly 'Microsoft.IdentityModel'
- 17. Windows Azure: Comment traiter le jeton SAML retourné par ACS en Java
- 18. Windows Azure ACS avec Windows Active Directory (2003)
- 19. Live Connect en tant que fournisseur d'identité Azure ACS
- 20. Azure ACS Popup ou In Page Redirect, quoi de mieux?
- 21. Récupère la liste des groupes auxquels l'utilisateur Azure AD appartient dans les revendications
- 22. Revendications Aware MVC App en 2012 - Déconnexion
- 23. Ajout de revendications supplémentaires à Windows Azure AD
- 24. Ajout d'une autorisation basée sur les revendications à MVC 3
- 25. Intégration d'Okta à Windows ACS
- 26. Autorisation de revendications pour des ressources spécifiques
- 27. Sessions dans ASP MVC
- 28. gestion des sessions au printemps MVC
- 29. Application de revendications personnalisées dans l'application basée sur les revendications
- 30. Azure Annonce Renvoyer les rôles dans les revendications mais User.IsInRole renvoie false