Aikido SAML SSO integration

Aikido Security SAML 설정 방법

사전 준비

  1. SAML 지원은 기본적으로 Disable 상태이다.
  2. SAML 지원을 위해서는 먼저 채팅으로 Aikido에 SAML 지원을 요청해야 한다.
  3. 지원을 요청할때 SAML 활성화와 함께 우리 도메인(example.com)의 SAML 연동을 허용해 달라고 요청해야 한다.
  4. 요청이 수용되면 SAML Setup 메뉴가 보여진다.

Aikido SAML 설정 확인

  • ⚙️ > General > SAML Setup > Enable SAML Authentication

  • Setup SAML Authentication

  • Copy following details to your identity provider.

    • Single Sign-On URL / ACS URL:
      • https://app.aikido.dev/api/saml/saml_auth?samlClientId=68638323
    • Audience URI / Entity ID:
      • https://app.aikido.dev/saml
    • Name ID Format:
      • EmailAddress
  • Aikido가 제공한 값은 Aikido가 SAML 서비스 제공자(SP)라는 뜻.

  • 이를 Keycloak의 SAML Client에 등록한 뒤, 반대로 Keycloak의 Issuer·SSO URL·인증서를 Aikido에 입력해야 한다.

  • Aikido가 제공한 값은 확인만하여 다음 Keyclock Client 설정에 사용한다.


Keycloak에 Aikido SAML Client 생성

  • Manage realms > myrealm 선택해서 활성화
  • Clients > Create client
    • General settings
      • Client type: SAML
      • Client ID:
        • https://app.aikido.dev/saml
      • Name: Aikido SAML
      • Description: Aikido SAML SSO integration
    • <Next>

  • [Settings 탭]
    • Access settings

      • Root URL: 비워 둠
      • Home URL: 비워 둠
      • Valid Redirect URIs:
        • https://app.aikido.dev/api/saml/saml_auth?samlClientId=68638323
      • IDP-Initiated SSO URL name: 비워 둠
      • IDP-Initiated SSO Relay State: 비워 둠
      • Master SAML Processing URL:
        • https://app.aikido.dev/api/saml/saml_auth?samlClientId=68638323
    • SAML capabilities

      • Name ID Format: email
      • Force Name ID Format: On
      • Force POST Binding: On
      • Include AuthnStatement: On
      • Include OneTimeUse Condition: Off
      • Optimize REDIRECT signing key lookup: Off
      • Allow ECP flow: Off
    • Signature and Encryption

      • Sign Documents: On
      • Sign Assertions: On
      • Signature Algorithm: RSA_SHA256
      • SAML Signature Key Name: KEY_ID
      • Canonicalization method: EXCLUSIVE
      • Metadata descriptor URL: 비워 둠
      • Use metadata descriptor URL: Off

  • [Keys 탭]
    • Client Signature Required: Off
    • Encrypt Assertions: Off

  • [Client scopes 탭]
    • role_list를 삭제한다. (중요!!)
    • https://app.aikido.dev/saml-dedicated: No mappers 상태여야 한다.

  • [Advanced 탭]
    • Fine Grain SAML Endpoint Configuration
      • Assertion Consumer Service POST Binding URL:
        • https://app.aikido.dev/api/saml/saml_auth?samlClientId=68638323
      • Assertion Consumer Service Redirect Binding: URL 비워둠
      • Logout Service URL: 비워 둠

Aikido에 SAML 입력 양식 선 조사 및 입력

아래 URL을 확인하여 XML 형태의 정보를 확인한다. SAML 입력양식에 대한 정보는 이 XML에 포함되어 있다.

  • https://sso.example.com/realms/myrealm/protocol/saml/descriptor

  • Setup SAML Authentication

  • Fill in details provided by the identity provider.

  • Entity ID / Issuer

    • entityID=“https://sso.example.com/realms/myrealm” 를 검색하여 이 중 아래부분을 취하여 입력한다.
      • https://sso.example.com/realms/myrealm
  • Single Sign-On URL

    • <md:SingleSignOnService Binding=“urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect” Location=“https://sso.example.com/realms/myrealm/protocol/saml”/> 를 검색하여 이 중 아래부분을 취하여 입력한다.
      • https://sso.example.com/realms/myrealm/protocol/saml
  • X.509 Certificate

    • X509Certificate entity의 MIIC…= 까지 값을 입력한다.

    <X509Certificate> MIIC…= </X509Certificate>

  • Company Email Domain

    • example.com (이 도메인은 사전에 Aikido에 승인이 되어 있어야 한다)
위로 스크롤