Chapitre 5. PicketLink Identity Management
5.1. Security Token Service (STS)
Le service de jetons de sécurité (STS) génère et gère des jetons de sécurité. Il ne crée pas de jetons de type particulier. À la place, il définit des interfaces génériques qui autorisent l'ajout de multiples fournisseurs de jetons. De ce fait, il peut être configuré pour gérer plusieurs types de jetons, dans la mesure où un fournisseur de jetons existe pour chaque type de token. Il spécifie également le format de la requête de jeton de sécurité et les messages réponse.
Un message STS indique :
- Type de requête, Issue, Renew, etc.
- Type de jeton
- Durée de vie du jeton donné
- Informations sur le fournisseur de services qui a demandé le jeton
- Informations utilisées pour crypter le jeton créé.
Le message de demande de jeton est envoyé dans le corps du message SOAP. Toutes les informations liées à la demande de jeton sont contenues dans l'élément
RequestSecurityToken
. L'exemple de requête contient deux autres éléments WS-Trust : RequestType
qui précise que cette requête est une requête d'émission et TokenType
qui spécifie le type du jeton qui sera attribuée.
Voici un exemple de message de requête WS-Trust.
Exemple 5.1. Message de requête de jeton de sécurité WS-Trust
<S11:Envelope xmlns:S11=".." xmlns:wsu=".." xmlns:wst=".."> <S11:Header> ... </S11:Header> <S11:Body wsu:Id="body"> <wst:RequestSecurityToken Context="context"> <wst:TokenType>http://www.tokens.org/SpecialToken</wst:TokenType> <wst:RequestType> http://docs.oasis-open.org/ws-sx/ws-trust/200512/Issue </wst:RequestType> </wst:RequestSecurityToken> </S11:Body> </S11:Envelope>
Voici un exemple de réponse de jeton de sécurité.
Exemple 5.2. Message de réponse de jeton de sécurité
<wst:RequestSecurityTokenResponse Context="context" xmlns:wst=".." xmlns:wsu=".."> <wst:TokenType>http://www.tokens.org/SpecialToken</wst:TokenType> <wst:RequestedSecurityToken> <token:SpecialToken xmlns:token="..."> ARhjefhE2FEjneovi&@FHfeoveq3 </token:SpecialToken> </wst:RequestedSecurityToken> <wst:Lifetime> <wsu:Created>...</wsu:Created> <wsu:Expires>...</wsu:Expires> </wst:Lifetime> </wst:RequestSecurityTokenResponse>
Dans l'exemple de réponse de jeton de sécurité, l'élément
TokenType
spécifie le type du jeton émis, alors que l'élément RequestedSecurityToken
contient le jeton lui-même. Le format du jeton dépend du type du jeton. L'élément de Lifetime
spécifie quand le jeton a été créé et quand il expire.
Traitement de la requête de jeton de sécurité
Voici les étapes de traitement d'une requête de jeton de sécurité :
- Un client envoie une requête de jeton de sécurité à
PicketLinkSTS
.
PicketLinkSTS
analyse le message de requête, et génère un modèle d'objet JAXB.
PicketLinkSTS
lit le fichier de configuration et crée l'objetSTSConfiguration
, si nécessaire. Ensuite, il obtient une référence auWSTrustRequestHandler
de la configuration et délègue le traitement de la requête à l'instance du gestionnaire de la demande.
- Le gestionnaire de requêtes utilise
STSConfiguration
pour définir les valeurs par défaut si nécessaire (par exemple, lorsque la demande ne spécifie pas une valeur de durée de vie de jeton)
- Le
WSTrustRequestHandler
crée unWSTrustRequestContext
, définissant l'objet de la requêteJAXB
et le principal de l'appelant reçu dePicketLinkSTS
.
- Le
WSTrustRequestHandler
utilise laSTSConfiguration
pour obtenir leSecurityTokenProvider
qui doit être utilisé pour traiter la requête selon le type du jeton qui est demandé. Ensuite, il appelle le fournisseur, en passant leWSTrustRequestContext
en tant que paramètre.
- L'instance
SecurityTokenProvider
traite la demande de jeton et stocke le jeton à produire dans le contexte de demande.
- Le
WSTrustRequestHandler
obtient le jeton du contexte, le crypte si nécessaire, et construit l'objet de réponse WS-Trust contenu dans le jeton de sécurité.
PicketLinkSTS
dicte la réponse générée par le gestionnaire de requêtes et la renvoie au client.