IBM Cloud Docs
싱글 사인온(SSO)

싱글 사인온(SSO)

Cloud Directory에서 싱글 사인온(SSO)을 사용하는 경우 여러 웹 앱 간에 원활한 인증 환경(experience)을 제공할 수 있습니다. 사용자가 처음 사인인할 때 SSO가 켜져 있는 경우 다음 번에 사인인할 때 인증 정보를 다시 입력할 필요가 없습니다. 대신 동일한 App ID 인스턴스로 보호되는 모든 앱에 자동으로 사인인됩니다.

App ID에서는 Cloud Directory 사용자용 SSO를 제공합니다. 소셜 또는 페더레이션 SAML ID 공급업체를 사용하는 경우, 해당 공급업체에서 SSO를 관리하며 App ID 는 이를 존중합니다.

작업 방식

작동 중인 SSO를 확인하려면 다음 다이어그램을 참조하십시오.

SSO
디렉터리 SSO

  1. Cloud Directory 사용자가 처음으로 앱에 사인인합니다.
  2. 사용자 이름 또는 이메일 및 비밀번호를 제공하여 인증하도록 요청 받습니다.
  3. 인증 정보가 올바른 경우 사용자가 앱에 사인인됩니다. 동시에 App ID에서 세션을 작성하고 사용자의 브라우저에 쿠키를 설정합니다.
  4. 사용자가 다른 애플리케이션에 로그인하려고 하면 App ID이(가) 세션 쿠키를 발견하고 사용자의 앱에 자동으로 서명합니다. App ID 세션 쿠키는 인스턴스에 따라 다르며 인스턴스의 고유한 개인 키로 서명됩니다.

현재 Cloud Directory가 사용되는 유일한 ID 제공자이면 Cloud Directory SSO가 작동하도록 구성됩니다. App ID의 인스턴스가 여러 ID 제공자를 사용하도록 구성되면 SSO를 사용으로 설정해도 로그인 플로우에 영향을 미치지 않습니다. Cloud Directory 인증 정보를 입력하거나 사인인할 때마다 다른 제공자 중 하나를 선택하도록 프롬프트가 표시됩니다.

SSO 구성

App ID 대시보드를 사용하거나 API를 사용하여 싱글 사인온을 구성할 수 있습니다.

GUI 사용

GUI를 통해 SSO를 구성할 수 있습니다.

  1. App ID 대시보드의 Cloud Directory > 싱글 사인온 탭으로 이동하십시오.

  2. 싱글 사인온 사용사용으로 전환하십시오.

  3. SSO 세션이 만료되기 전까지 사용자가 활동하지 않고 머무를 수 있는 시간을 설정하십시오. 세션이 만료되면 다시 사인인해야 합니다. 시간은 분 단위로 지정되며 허용되는 최대 비활동 시간은 10,080분(7일)입니다. 기본 시간은 1일에 해당되는 1440분입니다.

  4. 로그아웃 경로 재지정 URI 상자에 경로 재지정 URI를 추가한 후 + 부호를 클릭하십시오. 신뢰할 수 있는 애플리케이션만 등록해야 합니다. URI를 등록하는 경우 App ID에 해당 URI를 권한 워크플로우에 포함시킬 권한을 부여하게 됩니다.

  5. 저장 을 클릭하십시오.

API 사용

세 가지 설정을 정의하는 SSO 구성 관리 API를 사용하여 기능을 켤 수 있습니다.

호출 예제:

{
  "isActive": true,
  "inactivityTimeoutSeconds": 86400,
  "logoutRedirectUris": [
    "http://my-first-app.com/after_logout",
    "http://my-second-app.com/after_logout"
  ]
}
SSO 구성 설정
설정 정의
isActive SSO를 사용하려면 이 값을 true로 설정하십시오. 기본 설정은 false입니다.
inactivityTimeoutSeconds 사용자에게 인증 정보를 다시 입력하도록 요청할 때까지 사용자 활동 없이 보낼 수 있는 최대 시간입니다. 이 값은 초 단위로 지정되며 최대값은 604800 seconds(7일)입니다. 기본 설정은 86400 seconds(1일)입니다.
logoutRedirectUris App ID에서 사인아웃한 후 사용자를 경로 재지정할 수 있도록 허용되는 쉼표로 구분된 URI 목록입니다.

로그아웃 구성

App ID를 사용하는 경우 현재 브라우저에 대한 사용자의 SSO 세션을 종료할 수 있습니다. 사용자의 브라우저에서 API 엔드포인트에 액세스하는 경우 해당 세션이 종료되고 사용자가 다음 번에 모든 앱에 대해 해당 브라우저에서 사인인하려고 시도할 때 해당 사용자에게 인증 정보를 입력하도록 요청하는 프롬프트가 표시됩니다.

비밀번호 변경, 재설정 또는 갱신과 관련된 플로우 중 하나가 시작되면 모든 클라이언트에서 해당 사용자에 대한 세션이 자동으로 종료됩니다.

API 사용

사용자를 사인아웃하려면 다음 API 호출을 완료하기 위한 정보를 사용하여 해당 브라우저를 경로 재지정하십시오.

https://<region>.appid.cloud.ibm.com/oauth/v4/<tenantID>/cloud_directory/sso/logout?redirect_uri=<redirectURI>&client_id=<clientID>
SSO 로그아웃 API 호출 변수
가변
region App ID 인스턴스가 프로비저닝되는 지역입니다. 사용 가능한 지역에 대해 자세히 알아보십시오.
tenantID App ID 인스턴스의 고유 ID입니다. 이 값은 App ID 대시보드의 서비스 자격증명 탭에서 찾을 수 있습니다. 서비스 인증 정보 세트가 없는 경우 서비스 인증 정보 세트를 작성하여 해당 세트의 값을 사용할 수 있습니다.
redirectURI App ID 대시보드를 통해 SSO 구성에서 지정한 URI입니다. 보안 상의 이유로 값 경로 재지정을 지정하지 않을 경우 오류가 표시됩니다.
clientID 애플리케이션의 클라이언트 ID입니다.

SSO 세션이 종료된 경우에도 해당 토큰이 만료될 때까지 해당 세션에 저장된 유효한 액세스 토큰이 있는 사용자는 인증 정보를 다시 입력하지 않아도 됩니다. 기본적으로 토큰은 1시간 후에 만료됩니다.

Node.JS 서버 SDK 사용

App ID Node.js 서버 SDK를 사용하여 경로 재지정을 자동으로 처리할 수도 있습니다.

  1. 메소드로 logoutSSO를 설정하십시오. 예를 들어, 다음과 같습니다.

    let webAppStrategy = new WebAppStrategy(.....);
    ....
    webAppStrategy.logoutSSO();
    
  2. 로그아웃을 구성하십시오.

    app.get('/logoutSSO', (req, res) => {
       res.clearCookie("refreshToken");
       webAppStrategy.logoutSSO(req,res, { "redirect_uri": "https://my-app.com/after_logout" });
       });
    

사용자의 모든 세션 종료

관리자의 경우 App ID 관리 API를 사용하여 모든 사용자에 대한 모든 SSO 세션을 종료할 수 있습니다. 이 API는 Cloud IAM 토큰으로 보호됩니다.

API 요청 예제:

POST https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/Users/<userID>/sso/logout
Headers:
Authorization: Bearer <IAMToken>
Content-Type: application/json
사용자의 모든 SSO 세션을 종료하는 데 필요한 변수
가변
Content-Type 요청의 콘텐츠 유형입니다. 허용되는 값은 application/json 입니다.
region App ID 인스턴스가 프로비저닝되는 지역입니다. 사용 가능한 지역에 대해 자세히 알아보십시오.
tenantID App ID 인스턴스의 고유 ID입니다. 이 값은 App ID 대시보드의 서비스 자격증명 탭에서 찾을 수 있습니다. 서비스 인증 정보 세트가 없는 경우 서비스 인증 정보 세트를 작성하여 해당 세트의 값을 사용할 수 있습니다.
userID Cloud Directory 사용자의 고유 ID입니다. 이 ID는 Cloud Directory 사용자 API를 사용하거나 사용자의 ID 토큰을 확인하여 얻을 수 있습니다.

이 API를 호출하면 지정된 사용자의 모든 SSO 세션이 무효화됩니다. 즉, 사용자가 다음 번에 임의의 디바이스 또는 브라우저에서 임의의 앱에 사인인하려고 시도할 때 인증 정보를 다시 입력해야 합니다.