Use a API do StorageGRID se o login único estiver ativado (PingFederate)
Se você tem "configurou e ativou o single sign-on (SSO)" e utiliza PingFederate como provedor de SSO, é necessário emitir uma série de solicitações de API para obter um token de autenticação válido para a Grid Management API ou a Tenant Management API.
Faça login na API se o single sign-on estiver ativado
Estas instruções se aplicam se você estiver usando PingFederate como o provedor de identidade SSO
-
Você conhece o nome de usuário e a senha do SSO de um usuário federado que pertence a um grupo de usuários do StorageGRID.
-
Se você deseja acessar a API de Gerenciamento de Tenant, você sabe o ID da conta do tenant.
Para obter um token de autenticação, você pode usar um dos seguintes exemplos:
-
O
storagegrid-ssoauth.py`script Python, que está localizado no diretório de arquivos de instalação do StorageGRID (./rpms`para RHEL, `./debs`para Ubuntu ou Debian, e `./vsphere`para VMware). -
Um exemplo de fluxo de trabalho com requisições curl.
O fluxo de trabalho curl pode expirar se você o executar muito lentamente. Você poderá ver o erro:
A valid SubjectConfirmation was not found on this Response.O fluxo de trabalho curl de exemplo não protege a senha de ser vista por outros usuários. Se você tiver um problema de codificação de URL, poderá ver o seguinte erro:
Unsupported SAML version.
-
Selecione um dos seguintes métodos para obter um token de autenticação:
-
Use o `storagegrid-ssoauth.py`script Python. Vá para o passo 2.
-
Use requisições curl. Vá para o passo 3.
-
-
Se você quiser usar o `storagegrid-ssoauth.py`script, passe o script para o interpretador Python e execute o script.
Quando solicitado, insira valores para os seguintes argumentos:
-
O método SSO. Você pode inserir qualquer variação de "pingfederate" (PINGFEDERATE, pingfederate e assim por diante).
-
O nome de usuário SSO
-
O domínio onde StorageGRID está instalado. Este campo não é utilizado para PingFederate. Você pode deixá-lo em branco ou inserir qualquer valor.
-
O endereço do StorageGRID
-
O ID da conta do locatário, caso você queira acessar a Tenant Management API.

O token de autorização do StorageGRID é fornecido na saída. Agora você pode usar o token para outras solicitações, de forma semelhante a como usaria a API se o SSO não estivesse sendo utilizado.
-
-
Se você deseja usar solicitações curl, use o procedimento a seguir.
-
Declare as variáveis necessárias para efetuar o login.
export SAMLUSER='my-sso-username' export SAMLPASSWORD='my-password' export TENANTACCOUNTID='12345' export STORAGEGRID_ADDRESS='storagegrid.example.com'Para acessar a API de Gerenciamento de Grid, use 0 como TENANTACCOUNTID. -
Para receber uma URL de autenticação assinada, envie uma solicitação POST para
/api/v3/authorize-samle remova a codificação JSON adicional da resposta.Este exemplo mostra uma solicitação POST para uma URL de autenticação assinada para TENANTACCOUNTID. Os resultados serão passados para python -m json.tool para remover a codificação JSON.
curl -X POST "https://$STORAGEGRID_ADDRESS/api/v3/authorize-saml" \ -H "accept: application/json" -H "Content-Type: application/json" \ --data "{\"accountId\": \"$TENANTACCOUNTID\"}" | python -m json.toolA resposta para este exemplo inclui uma URL assinada que está codificada em URL, mas não inclui a camada adicional de codificação JSON.
{ "apiVersion": "3.0", "data": "https://my-pf-baseurl/idp/SSO.saml2?...", "responseTime": "2018-11-06T16:30:23.355Z", "status": "success" } -
Salve o
SAMLRequestda resposta para uso em comandos subsequentes.export SAMLREQUEST="https://my-pf-baseurl/idp/SSO.saml2?..."
-
Exporte a resposta e o cookie e exiba a resposta:
RESPONSE=$(curl -c - "$SAMLREQUEST")echo "$RESPONSE" | grep 'input type="hidden" name="pf.adapterId" id="pf.adapterId"' -
Exporte o valor "pf.adapterId" e exiba a resposta:
export ADAPTER='myAdapter'
echo "$RESPONSE" | grep 'base' -
Exporte o valor 'href' (remova a barra final /) e exiba a resposta:
export BASEURL='https://my-pf-baseurl'
echo "$RESPONSE" | grep 'form method="POST"' -
Exporte o valor de "ação":
export SSOPING='/idp/.../resumeSAML20/idp/SSO.ping'
-
Enviar cookies juntamente com credenciais:
curl -b <(echo "$RESPONSE") -X POST "$BASEURL$SSOPING" \ --data "pf.username=$SAMLUSER&pf.pass=$SAMLPASSWORD&pf.ok=clicked&pf.cancel=&pf.adapterId=$ADAPTER" --include -
Salve o
SAMLResponsedo campo oculto:export SAMLResponse='PHNhbWxwOlJlc3BvbnN...1scDpSZXNwb25zZT4=' -
Utilizando o valor salvo
SAMLResponse, faça uma solicitação StorageGRID/api/saml-responsepara gerar um token de autenticação do StorageGRID.Para
RelayState, use o ID da conta do tenant ou use 0 se você quiser fazer login na Grid Management API.curl -X POST "https://$STORAGEGRID_ADDRESS:443/api/saml-response" \ -H "accept: application/json" \ --data-urlencode "SAMLResponse=$SAMLResponse" \ --data-urlencode "RelayState=$TENANTACCOUNTID" \ | python -m json.toolA resposta inclui o token de autenticação.
{ "apiVersion": "3.0", "data": "56eb07bf-21f6-40b7-af0b-5c6cacfb25e7", "responseTime": "2018-11-07T21:32:53.486Z", "status": "success" }-
Salve o token de autenticação na resposta como
MYTOKEN.export MYTOKEN="56eb07bf-21f6-40b7-af0b-5c6cacfb25e7"Agora você pode usar
MYTOKENpara outras solicitações, de forma semelhante a como usaria a API se o SSO não estivesse sendo utilizado.
-
Saia da API se o single sign-on estiver ativado
Se o login único (SSO) estiver habilitado, você deve emitir uma série de solicitações de API para sair da API de Gerenciamento de Grid ou da API de Gerenciamento de Locatários. Essas instruções se aplicam se você estiver usando PingFederate como provedor de identidade SSO
Caso necessário, você pode sair da StorageGRID API fazendo logout na página de logout único da sua organização. Ou, você pode acionar o logout único (SLO) a partir do StorageGRID, o que requer um token de portador StorageGRID válido.
-
Para gerar uma solicitação de logout assinada, passe o cookie
sso=truepara a API SLO:curl -k -X DELETE "https://$STORAGEGRID_ADDRESS/api/v3/authorize" \ -H "accept: application/json" \ -H "Authorization: Bearer $MYTOKEN" \ --cookie "sso=true" \ | python -m json.toolUma URL de logout é retornada:
{ "apiVersion": "3.0", "data": "https://my-ping-url/idp/SLO.saml2?SAMLRequest=fZDNboMwEIRfhZ...HcQ%3D%3D", "responseTime": "2021-10-12T22:20:30.839Z", "status": "success" } -
Salve a URL de logout.
export LOGOUT_REQUEST='https://my-ping-url/idp/SLO.saml2?SAMLRequest=fZDNboMwEIRfhZ...HcQ%3D%3D' -
Envie uma solicitação para o URL de logout para acionar o SLO e redirecionar de volta para StorageGRID.
curl --include "$LOGOUT_REQUEST"A resposta 302 é retornada. O local de redirecionamento não se aplica ao logout somente via API.
HTTP/1.1 302 Found Location: https://$STORAGEGRID_ADDRESS:443/api/saml-logout?SAMLResponse=fVLLasMwEPwVo7ss%...%23rsa-sha256 Set-Cookie: PF=QoKs...SgCC; Path=/; Secure; HttpOnly; SameSite=None
-
Exclua o token de portador do StorageGRID.
Excluir o token de portador do StorageGRID funciona da mesma forma que sem SSO. Se o cookie
sso=truenão for fornecido, o usuário será desconectado do StorageGRID sem afetar o estado do SSO.curl -X DELETE "https://$STORAGEGRID_ADDRESS/api/v3/authorize" \ -H "accept: application/json" \ -H "Authorization: Bearer $MYTOKEN" \ --includeUma `204 No Content`resposta indica que o usuário agora está desconectado.
HTTP/1.1 204 No Content