Skip to main content
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

Single Sign-On이 활성화된 경우 API를 사용하세요(Active Directory)

만약 당신이 가지고 있다면"구성 및 활성화된 Single Sign-On(SSO)" SSO 공급자로 Active Directory를 사용하는 경우 Grid Management API 또는 Tenant Management API에 유효한 인증 토큰을 얻기 위해 일련의 API 요청을 발행해야 합니다.

Single Sign-On이 활성화된 경우 API에 Sign in.

이 지침은 SSO ID 공급자로 Active Directory를 사용하는 경우에 적용됩니다.

시작하기 전에
  • StorageGRID 사용자 그룹에 속한 페더레이션 사용자의 SSO 사용자 이름과 비밀번호를 알고 있습니다.

  • 테넌트 관리 API에 액세스하려면 테넌트 계정 ID를 알고 있어야 합니다.

이 작업에 관하여

인증 토큰을 얻으려면 다음 예 중 하나를 사용할 수 있습니다.

  • 그만큼 storagegrid-ssoauth.py StorageGRID 설치 파일 디렉토리에 있는 Python 스크립트(./rpms Red Hat Enterprise Linux의 경우 ./debs Ubuntu 또는 Debian의 경우 ./vsphere VMware의 경우).

  • curl 요청의 워크플로 예시.

    너무 느리게 수행하면 컬 워크플로가 시간 초과될 수 있습니다. 다음과 같은 오류가 표시될 수 있습니다. A valid SubjectConfirmation was not found on this Response .

    참고 예제 curl 워크플로는 다른 사용자가 비밀번호를 보는 것을 보호하지 않습니다.

URL 인코딩 문제가 있는 경우 다음 오류가 표시될 수 있습니다. Unsupported SAML version .

단계
  1. 인증 토큰을 얻으려면 다음 방법 중 하나를 선택하세요.

    • 사용하다 storagegrid-ssoauth.py 파이썬 스크립트. 2단계로 이동합니다.

    • curl 요청을 사용하세요. 3단계로 이동합니다.

  2. 를 사용하려면 storagegrid-ssoauth.py 스크립트를 Python 인터프리터에 전달하고 스크립트를 실행합니다.

    메시지가 표시되면 다음 인수에 대한 값을 입력합니다.

    • SSO 방식. ADFS 또는 adfs를 입력하세요.

    • SSO 사용자 이름

    • StorageGRID 가 설치된 도메인

    • StorageGRID 의 주소

    • 테넌트 관리 API에 액세스하려면 테넌트 계정 ID가 필요합니다.

      AD FS용 SSO 인증 스크립트

    StorageGRID 인증 토큰은 출력에 제공됩니다. 이제 SSO를 사용하지 않을 경우 API를 사용하는 것과 유사하게 다른 요청에도 토큰을 사용할 수 있습니다.

  3. curl 요청을 사용하려면 다음 절차를 따르세요.

    1. 로그인에 필요한 변수를 선언합니다.

      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'
      참고 Grid Management API에 액세스하려면 0을 사용하세요. TENANTACCOUNTID .
    2. 서명된 인증 URL을 받으려면 POST 요청을 발행하세요. /api/v3/authorize-saml 그리고 응답에서 추가적인 JSON 인코딩을 제거합니다.

      이 예에서는 서명된 인증 URL에 대한 POST 요청을 보여줍니다. TENANTACCOUNTID . 결과는 다음에게 전달됩니다. python -m json.tool 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.tool

      이 예제에 대한 응답에는 URL로 인코딩된 서명된 URL이 포함되지만, 추가적인 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"
      }
    3. 저장하다 SAMLRequest 후속 명령에서 사용할 응답에서.

      export SAMLREQUEST='fZHLbsIwEEV%2FJTuv7...sSl%2BfQ33cvfwA%3D'
    4. AD FS에서 클라이언트 요청 ID를 포함하는 전체 URL을 가져옵니다.

      한 가지 옵션은 이전 응답의 URL을 사용하여 로그인 양식을 요청하는 것입니다.

      curl "https://$AD_FS_ADDRESS/adfs/ls/?SAMLRequest=$SAMLREQUEST&RelayState=$TENANTACCOUNTID" | grep 'form method="post" id="loginForm"'

      응답에는 클라이언트 요청 ID가 포함됩니다.

      <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" >
    5. 응답에서 클라이언트 요청 ID를 저장합니다.

      export SAMLREQUESTID='00000000-0000-0000-ee02-0080000000de'
    6. 이전 응답의 양식 작업으로 자격 증명을 보냅니다.

      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" --include

      AD FS는 헤더에 추가 정보를 포함하여 302 리디렉션을 반환합니다.

      참고 SSO 시스템에 다중 인증 요소(MFA)가 활성화된 경우 양식 게시물에 두 번째 비밀번호나 기타 자격 증명도 포함됩니다.
      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
    7. 저장하다 MSISAuth 응답에서 쿠키를 가져옵니다.

      export MSISAuth='AAEAADAvsHpXk6ApV...pmP0aEiNtJvWY='
    8. 인증 POST의 쿠키를 사용하여 지정된 위치로 GET 요청을 보냅니다.

      curl "https://$AD_FS_ADDRESS/adfs/ls/?SAMLRequest=$SAMLREQUEST&RelayState=$TENANTACCOUNTID&client-request-id=$SAMLREQUESTID" \
      --cookie "MSISAuth=$MSISAuth" --include

      응답 헤더에는 이후 로그아웃에 사용할 AD FS 세션 정보가 포함되고, 응답 본문에는 숨겨진 양식 필드에 SAMLResponse가 포함됩니다.

      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" />
    9. 저장하다 SAMLResponse 숨겨진 필드에서:

      export SAMLResponse='PHNhbWxwOlJlc3BvbnN...1scDpSZXNwb25zZT4='
    10. 저장된 것을 사용하여 SAMLResponse , StorageGRID 를 만드세요/api/saml-response StorageGRID 인증 토큰을 생성하라는 요청입니다.

      을 위한 RelayState , 테넌트 계정 ID를 사용하거나 Grid Management API에 로그인하려면 0을 사용하세요.

      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.tool

      응답에는 인증 토큰이 포함됩니다.

    {
        "apiVersion": "3.0",
        "data": "56eb07bf-21f6-40b7-af0b-5c6cacfb25e7",
        "responseTime": "2018-11-07T21:32:53.486Z",
        "status": "success"
    }
    1. 응답에 인증 토큰을 다음과 같이 저장합니다. MYTOKEN .

      export MYTOKEN="56eb07bf-21f6-40b7-af0b-5c6cacfb25e7"

      이제 사용할 수 있습니다 MYTOKEN 다른 요청의 경우 SSO가 사용되지 않는 경우 API를 사용하는 방법과 비슷합니다.

Single Sign-On이 활성화된 경우 API에서 로그아웃합니다.

SSO(Single Sign-On)가 활성화된 경우 Grid Management API 또는 Tenant Management API에서 로그아웃하려면 일련의 API 요청을 발행해야 합니다. 이 지침은 SSO ID 공급자로 Active Directory를 사용하는 경우에 적용됩니다.

이 작업에 관하여

필요한 경우 조직의 단일 로그아웃 페이지에서 로그아웃하여 StorageGRID API에서 로그아웃할 수 있습니다. 또는 유효한 StorageGRID 베어러 토큰이 필요한 StorageGRID 에서 단일 로그아웃(SLO)을 트리거할 수 있습니다.

단계
  1. 서명된 로그아웃 요청을 생성하려면 SLO API에 `cookie "sso=true"를 전달합니다.

    curl -k -X DELETE "https://$STORAGEGRID_ADDRESS/api/v3/authorize" \
    -H "accept: application/json" \
    -H "Authorization: Bearer $MYTOKEN" \
    --cookie "sso=true" \
    | python -m json.tool

    로그아웃 URL이 반환됩니다.

    {
        "apiVersion": "3.0",
        "data": "https://adfs.example.com/adfs/ls/?SAMLRequest=fZDNboMwEIRfhZ...HcQ%3D%3D",
        "responseTime": "2018-11-20T22:20:30.839Z",
        "status": "success"
    }
  2. 로그아웃 URL을 저장합니다.

    export LOGOUT_REQUEST='https://adfs.example.com/adfs/ls/?SAMLRequest=fZDNboMwEIRfhZ...HcQ%3D%3D'
  3. SLO를 트리거하고 StorageGRID 로 다시 리디렉션하려면 로그아웃 URL로 요청을 보냅니다.

    curl --include "$LOGOUT_REQUEST"

    302 응답이 반환됩니다. 리디렉션 위치는 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
  4. StorageGRID 베어러 토큰을 삭제합니다.

    StorageGRID 베어러 토큰을 삭제하는 방법은 SSO를 사용하지 않는 경우와 동일합니다. `cookie "sso=true"가 제공되지 않으면 사용자는 SSO 상태에 영향을 미치지 않고 StorageGRID 에서 로그아웃됩니다.

    curl -X DELETE "https://$STORAGEGRID_ADDRESS/api/v3/authorize" \
    -H "accept: application/json" \
    -H "Authorization: Bearer $MYTOKEN" \
    --include

    에이 204 No Content 응답은 사용자가 이제 로그아웃되었음을 나타냅니다.

    HTTP/1.1 204 No Content