Use a API do StorageGRID se o logon único estiver habilitado (Active Directory)
Se você tem "configurou e ativou o single sign-on (SSO)" e utiliza o Active Directory 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 o Active Directory como 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. Digite ADFS ou adfs.
-
O nome de usuário SSO
-
O domínio onde StorageGRID está instalado
-
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 SAMLDOMAIN='my-domain' export TENANTACCOUNTID='12345' export STORAGEGRID_ADDRESS='storagegrid.example.com' export AD_FS_ADDRESS='adfs.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 parapython -m json.toolpara 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://adfs.example.com/adfs/ls/?SAMLRequest=fZHLbsIwEEV%2FJTuv7...sSl%2BfQ33cvfwA%3D&RelayState=12345", "responseTime": "2018-11-06T16:30:23.355Z", "status": "success" } -
Salve o
SAMLRequestda resposta para uso em comandos subsequentes.export SAMLREQUEST='fZHLbsIwEEV%2FJTuv7...sSl%2BfQ33cvfwA%3D' -
Obtenha uma URL completa que inclua o ID da solicitação do cliente do AD FS.
Uma opção é solicitar o formulário de login usando a URL da resposta anterior.
curl "https://$AD_FS_ADDRESS/adfs/ls/?SAMLRequest=$SAMLREQUEST&RelayState=$TENANTACCOUNTID" | grep 'form method="post" id="loginForm"'A resposta inclui o ID da solicitação do cliente:
<form method="post" id="loginForm" autocomplete="off" novalidate="novalidate" onKeyPress="if (event && event.keyCode == 13) Login.submitLoginRequest();" action="/adfs/ls/? SAMLRequest=fZHRToMwFIZfhb...UJikvo77sXPw%3D%3D&RelayState=12345&client-request-id=00000000-0000-0000-ee02-0080000000de" >
-
Salve o ID da solicitação do cliente a partir da resposta.
export SAMLREQUESTID='00000000-0000-0000-ee02-0080000000de' -
Envie suas credenciais para a ação do formulário da resposta anterior.
curl -X POST "https://$AD_FS_ADDRESS/adfs/ls/?SAMLRequest=$SAMLREQUEST&RelayState=$TENANTACCOUNTID&client-request-id=$SAMLREQUESTID" \ --data "UserName=$SAMLUSER@$SAMLDOMAIN&Password=$SAMLPASSWORD&AuthMethod=FormsAuthentication" --includeO AD FS retorna um redirecionamento 302, com informações adicionais nos cabeçalhos.
Se a autenticação multifator (MFA) estiver habilitada para o seu sistema SSO, o formulário enviado também conterá a segunda senha ou outras credenciais. HTTP/1.1 302 Found Content-Length: 0 Content-Type: text/html; charset=utf-8 Location: https://adfs.example.com/adfs/ls/?SAMLRequest=fZHRToMwFIZfhb...UJikvo77sXPw%3D%3D&RelayState=12345&client-request-id=00000000-0000-0000-ee02-0080000000de Set-Cookie: MSISAuth=AAEAADAvsHpXk6ApV...pmP0aEiNtJvWY=; path=/adfs; HttpOnly; Secure Date: Tue, 06 Nov 2018 16:55:05 GMT
-
Salve o `MSISAuth`cookie da resposta.
export MSISAuth='AAEAADAvsHpXk6ApV...pmP0aEiNtJvWY=' -
Envie uma solicitação GET para o local especificado com os cookies da autenticação POST.
curl "https://$AD_FS_ADDRESS/adfs/ls/?SAMLRequest=$SAMLREQUEST&RelayState=$TENANTACCOUNTID&client-request-id=$SAMLREQUESTID" \ --cookie "MSISAuth=$MSISAuth" --includeOs cabeçalhos da resposta conterão informações da sessão do AD FS para uso posterior no logout, e o corpo da resposta conterá o SAMLResponse em um campo de formulário oculto.
HTTP/1.1 200 OK Cache-Control: no-cache,no-store Pragma: no-cache Content-Length: 5665 Content-Type: text/html; charset=utf-8 Expires: -1 Server: Microsoft-HTTPAPI/2.0 P3P: ADFS doesn't have P3P policy, please contact your site's admin for more details Set-Cookie: SamlSession=a3dpbnRlcnMtUHJpbWFyeS1BZG1pbi0xNzgmRmFsc2Umcng4NnJDZmFKVXFxVWx3bkl1MnFuUSUzZCUzZCYmJiYmXzE3MjAyZTA5LThmMDgtNDRkZC04Yzg5LTQ3NDUxYzA3ZjkzYw==; path=/adfs; HttpOnly; Secure Set-Cookie: MSISAuthenticated=MTEvNy8yMDE4IDQ6MzI6NTkgUE0=; path=/adfs; HttpOnly; Secure Set-Cookie: MSISLoopDetectionCookie=MjAxOC0xMS0wNzoxNjozMjo1OVpcMQ==; path=/adfs; HttpOnly; Secure Date: Wed, 07 Nov 2018 16:32:59 GMT <form method="POST" name="hiddenform" action="https://storagegrid.example.com:443/api/saml-response"> <input type="hidden" name="SAMLResponse" value="PHNhbWxwOlJlc3BvbnN...1scDpSZXNwb25zZT4=" /><input type="hidden" name="RelayState" value="12345" />
-
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 Grid Management API ou da Tenant Management API. Essas instruções se aplicam se você estiver usando Active Directory 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://adfs.example.com/adfs/ls/?SAMLRequest=fZDNboMwEIRfhZ...HcQ%3D%3D", "responseTime": "2018-11-20T22:20:30.839Z", "status": "success" } -
Salve a URL de logout.
export LOGOUT_REQUEST='https://adfs.example.com/adfs/ls/?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: MSISSignoutProtocol=U2FtbA==; expires=Tue, 20 Nov 2018 22:35:03 GMT; path=/adfs; HttpOnly; Secure
-
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