Use a API se o logon único estiver habilitado (Active Directory)
Se você tem"configurou e habilitou o logon único (SSO)" e você usa o Active Directory como o provedor de SSO, você deve emitir uma série de solicitações de API para obter um token de autenticação válido para a API de gerenciamento de grade ou a API de gerenciamento de locatários.
Sign in na API se o logon único estiver habilitado
Estas instruções se aplicam se você estiver usando o Active Directory como provedor de identidade SSO.
-
Você sabe o nome de usuário e a senha do SSO para um usuário federado que pertence a um grupo de usuários do StorageGRID .
-
Se você quiser acessar a API de gerenciamento de locatários, saiba o ID da conta do locatário.
Para obter um token de autenticação, você pode usar um dos seguintes exemplos:
-
O
storagegrid-ssoauth.pyScript Python, que está localizado no diretório de arquivos de instalação do StorageGRID(./rpmspara Red Hat Enterprise Linux,./debspara Ubuntu ou Debian, e./vspherepara VMware). -
Um exemplo de fluxo de trabalho de solicitações curl.
O fluxo de trabalho do curl pode expirar se você o executar muito lentamente. Você pode 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 erro: Unsupported SAML version .
-
Selecione um dos seguintes métodos para obter um token de autenticação:
-
Use o
storagegrid-ssoauth.pyScript Python. Vá para o passo 2. -
Use solicitações curl. Vá para a etapa 3.
-
-
Se você quiser usar o
storagegrid-ssoauth.pyscript, 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 do SSO
-
O domínio onde o StorageGRID está instalado
-
O endereço para StorageGRID
-
O ID da conta do locatário, se você quiser acessar a API de gerenciamento de locatários.
O token de autorização 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 usado.
-
-
Se você quiser usar solicitações curl, use o seguinte procedimento.
-
Declare as variáveis necessárias para fazer 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 grade, use 0 como TENANTACCOUNTID. -
Para receber uma URL de autenticação assinada, emita 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 repassados 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 é codificada por 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 de solicitação do cliente do AD FS.
Uma opção é solicitar o formulário de login usando o 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 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 seu sistema SSO, a postagem do formulário 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
MSISAuthcookie da resposta.export MSISAuth='AAEAADAvsHpXk6ApV...pmP0aEiNtJvWY=' -
Envie uma solicitação GET para o local especificado com os cookies do POST de autenticação.
curl "https://$AD_FS_ADDRESS/adfs/ls/?SAMLRequest=$SAMLREQUEST&RelayState=$TENANTACCOUNTID&client-request-id=$SAMLREQUESTID" \ --cookie "MSISAuth=$MSISAuth" --includeOs cabeçalhos de resposta conterão informações de sessão do AD FS para uso posterior em caso de 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=' -
Usando o salvo
SAMLResponse, faça um StorageGRID/api/saml-responsesolicitação para gerar um token de autenticação StorageGRID .Para
RelayState, use o ID da conta do locatário ou use 0 se quiser fazer login na API de gerenciamento de grade.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, semelhante a como você usaria a API se o SSO não estivesse sendo usado.
-
Sair da API se o logon único estiver habilitado
Se o logon único (SSO) estiver habilitado, você deverá emitir uma série de solicitações de API para sair da API de gerenciamento de grade ou da API de gerenciamento de locatários. Estas instruções se aplicam se você estiver usando o Active Directory como provedor de identidade SSO
Se necessário, você pode sair da API do StorageGRID efetuando logout na página de logout única da sua organização. Ou você pode acionar o logout único (SLO) do StorageGRID, o que requer um token portador do StorageGRID válido.
-
Para gerar uma solicitação de logout assinada, passe `cookie "sso=true" para 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.toolUm URL de logout é retornado:
{ "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 o 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 o StorageGRID.
curl --include "$LOGOUT_REQUEST"A resposta 302 é retornada. O local de redirecionamento não se aplica ao logout somente da 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 portador do StorageGRID .
A exclusão do token portador do StorageGRID funciona da mesma forma que sem o SSO. Se `cookie "sso=true" nã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" \ --includeUM
204 No Contenta resposta indica que o usuário está desconectado.HTTP/1.1 204 No Content