Capítulo 5. Gerenciamento de Identidade PicketLink
5.1. Security Token Service (STS - Serviço Token de Segurança)
O Security Token Service (Serviço Token de Segurança) gera e gerencia os tokens de segurança. Ele não emite tokens de um tipo específico. Ao invés disso, ele define interfaces que permitem provedores de token múltiplos a serem plugados. Como resultado, ele pode ser configurado para lidar com vários tipos de token, contanto que o provedor do token exista para cada tipo de token. Ele também especifica o formato da solicitação do token de segurança e responde mensagens.
A mensagem da solicitação do token de segurança especifica o seguinte:
- Tipo de solicitação, tal como o Problema, Revisão e mais.
- O tipo de token.
- O tempo de vida do token emitido.
- A informação sobre o provedor de serviço que solicitou o token.
- A informação usada para criptografar o token gerado.
A mensagem de solicitação do token é enviada no corpo da mensagem SOAP. Toda a informação relacionada à solicitação do token está contida no elemento
RequestSecurityToken
. A solicitação da amostra contém dois outros elementos WS-Trust: RequestType
, dos quais especificam que esta solicitação é uma solicitação de Problema e o TokenType
, do qual especifica o tipo de token a ser emitido.
Segue abaixo uma amostra da mensagem de solicitação do WS-Trust.
Exemplo 5.1. A mensagem da solicitação do token de segurança 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>
Segue abaixo uma amostra de uma resposta do token de segurança.
Exemplo 5.2. A mensagem de resposta do token de segurança.
<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>
Na amostra para a resposta do token de segurança, o elemento
TokenType
especifica o tipo de token emitido, enquanto o elemento RequestedSecurityToken
contém o próprio token. O formato do token depende no tipo do token. O elemento Lifetime
especifica quando o token foi criado e quando ele espira.
Processando a Solicitação do Token de Segurança
Segue abaixo as etapas pelas quais as solicitações do token de segurança são processadas:
- Um cliente envia a solicitação do token de segurança ao
PicketLinkSTS
.
- O
PicketLinkSTS
analisa a mensagem de solicitação, gerando um modelo do objeto JAXB.
- O
PicketLinkSTS
lê o arquivo de configuração e cria o objetoSTSConfiguration
, se necessário. Então, ele obtém uma referência aoWSTrustRequestHandler
a partir da configuração e delega o processamento da solicitação à instância do manuseador.
- O manuseador da solicitação usa o
STSConfiguration
para determinar os valores default (por exemplo, quando a solicitação não especifica o valor do tempo de vida do token).
- O
WSTrustRequestHandler
cria oWSTrustRequestContext
, configurando o objeto da solicitaçãoJAXB
e o principal do chamador que recebeu a partir doPicketLinkSTS
.
- O
WSTrustRequestHandler
usa oSTSConfiguration
para obter oSecurityTokenProvider
que deve ser usado para processar a solicitação baseada no tipo de token que está sendo solicitado. Então, ele invoca o provedor, passando oWSTrustRequestContext
construído conforme um parâmetro.
- A instância
SecurityTokenProvider
processa a solicitação do token e store o token emitido no contexto da solicitação.
- O
WSTrustRequestHandler
obtém o token do contexto, criptografa caso seja necessário, e constrói o objeto de resposta WS-Trust contendo o token de segurança.
- O
PicketLinkSTS
dita a resposta gerada pelo manuseador da solicitação e retorna-a ao cliente.