Partager via


ClaimsAuthenticationManager, ClaimsAuthorizationManager et OriginalIssuer

ClaimsAuthenticationManager

ClaimsAuthenticationManager vous permet d'effectuer des transformations sur les revendications, notamment d'ajouter, de modifier et de supprimer des revendications extraites d'un jeton entrant avant que votre application RP ne les reçoive. Il fournit un emplacement unique pour l'authentification des revendications. Il s'agit d'un emplacement commun entre une application ASP.NET et une application WCF, où vous posez la question : « Puis-je faire confiance à cet émetteur pour la création de ces revendications ? »

Pour intercepter des revendications entrantes, créez une classe qui dérive de ClaimsAuthenticationManager et implémente sa seule méthode, Authenticate. Juste avant que votre application RP ne reçoive les revendications extraites du jeton, WIF appelle cette méthode et passe une ClaimsIdentityCollection qui contient les revendications extraites d'un jeton entrant. Vous pouvez modifier cette collection, puis la retourner à partir de la méthode. Votre application RP reçoit ensuite la collection modifiée de revendications.

Pour utiliser ClaimsAuthenticationManager, vous devez également l'ajouter au fichier de configuration de votre application RP ou le configurer sur le ClaimsAuthenticationManager de l'objet ServiceConfiguration. Pour plus d'informations sur l'objet ServiceConfiguration, consultez Configuration.

ClaimsAuthorizationManager

ClaimsAuthorizationManager fournit un emplacement unique pour l'autorisation ou le refus des demandes entrantes avant que votre application RP ne les reçoive. Il s'agit de l'emplacement où vous posez la question : « Dois-je autoriser le demandeur à effectuer cette action sur cette ressource ? »

Pour intercepter des demandes entrantes, créez une classe qui dérive de ClaimsAuthorizationManager et implémente sa seule méthode, CheckAccess. Le paramètre AuthorizationContext contient les membres suivants :

  1. Action, une collection de Claims qui représente l'action.

  2. Principal, le IClaimsPrincipal du demandeur.

  3. Resource, une collection de Claims qui représente la ressource.

Notez qu'AuthorizationContext.Action correspond à ClaimsPrincipalPermission.Operation, pas à ClaimsPrincipalPermission.SecurityAction. AuthorizationContext.Resource correspond à ClaimsPrincipalPermission.Resource.

Pour utiliser ClaimsAuthorizationManager, vous devez également l'ajouter au fichier de configuration de votre application RP ou le configurer sur le ClaimsAuthorizationManager de l'objet ServiceConfiguration. Pour plus d'informations sur l'objet ServiceConfiguration, consultez Configuration.

Notez que pour les points de terminaison de service WCF, la ressource passée au ClaimsAuthorizationManager est en général un URI de point de terminaison. Cela est vrai pour les points de terminaison suivants :

  1. Services WCF.

  2. Services REST appelés avec la méthode POST.

  3. Applications ASP.NET avec un ClaimsAuthorizationModule appelées avec la méthode POST.

Cela n'est pas vrai pour les points de terminaison suivants :

  1. Services REST appelés avec la méthode GET.

  2. Applications ASP.NET avec un ClaimsAuthorizationModule appelées avec la méthode GET.

Pour autoriser ou refuser des demandes en fonction de l'URI de point de terminaison, vous ne pouvez pas effectuer de comparaison de chaînes stricte, parce que l'URI varie par demande selon les paramètres de requête des chaînes de demandes.

De même, notez que vous ne devez pas prendre de décisions d'autorisation dans les méthodes de rappel asynchrones, car le ClaimsAuthorizationManager n'est pas appelé pour ces méthodes. Vous pouvez prendre des décisions d'autorisation dans une méthode Beginxxx, mais pas dans une méthode Endxxx ou de rappel asynchrone.

OriginalIssuer

Lorsque votre application de partie de confiance (RP) doit prendre une décision de stratégie en fonction du STS qui a émis la revendication à l'origine, vous pouvez utiliser la propriété OriginalIssuer. Cette propriété est définie par le service d'émission de jeton de sécurité (STS) qui émet le jeton qui contient la revendication.

Par exemple, supposez que votre RP reçoit un jeton de son RP-STS. Le RP-STS lui-même approuve plusieurs STS de fournisseur d'identité (IP-STS). La RP approuve son RP-STS, ce qui par extension signifie qu'elle approuve également les IP-STS. Toutefois, la RP doit prendre une décision de stratégie selon que le jeton contient des revendications initialement émises par le RP-STS ou par l'un des IP-STS. La propriété OriginalIssuer lui permet de prendre cette décision.

La valeur de la propriété OriginalIssuer n'est pas vérifiable par chiffrement. Par conséquent, vous pouvez l'utiliser pour prendre des décisions de stratégie, mais vous ne devez pas l'utiliser pour prendre des décisions de sécurité.

Notes

Un STS dans une chaîne de délégation doit conserver la valeur OriginalIssuer sur toutes les revendications qu'il a reçues en émettant un autre jeton qui contient ces revendications.