다음을 통해 공유


Strata의 Azure Active Directory B2C를 구성하는 자습서

주의

이 문서에서는 EOL(수명 종료) 상태에 가까워진 Linux 배포판인 CentOS를 참조하세요. 이에 따라 사용 및 계획을 고려하세요.

이 자습서에서는 온-프레미스 애플리케이션을 보호하는 데 도움이 되는 Strata Maverics Identity Orchestrator와 Azure AD B2C(Azure Active Directory B2C)를 통합하는 방법을 알아봅니다. ID시스템에 연결하고, 사용자와 자격 증명을 마이그레이션하고, 정책과 구성을 동기화하며, 인증 및 세션 관리를 추상화합니다. Strata를 사용하여 애플리케이션을 다시 작성하지 않고도 레거시에서 Azure AD B2C로 전환합니다.

이 솔루션에는 다음과 같은 이점이 있습니다.

  • 온-프레미스 하이브리드 앱에 대한 고객 SSO(Single Sign-On) - Azure AD B2C는 Maverics Identity Orchestrator를 통해 고객 SSO를 지원합니다.
    • 사용자는 Azure AD B2C 또는 IdP(ID 공급자)에서 호스트되는 계정으로 로그인합니다.
    • Maverics는 Symantec SiteMinder와 같은 레거시 ID 시스템으로 보호된 앱에 대한 SSO를 입증합니다.
  • 표준 SSO를 앱으로 확장 - Azure AD B2C를 사용하여 사용자 액세스를 관리하고 Maverics Identity Orchestrator SAML(Security Assertion Markup Language) 또는 OIDC(OpenID Connect) 커넥터를 사용하여 SSO를 사용하도록 설정합니다.
  • 간편한 구성 - Maverics Identity Orchestrator SAML 또는 OIDC 커넥터를 Azure AD B2C에 연결합니다.

필수 조건

시작하려면 다음이 필요합니다.

  • Azure 구독에 연결된 Azure AD B2C 테넌트
  • Maverics Identity Orchestrator에서 사용되는 비밀을 저장하는 Azure Key Vault의 인스턴스. Azure AD B2C 또는 LDAP(Lightweight Directory Access Protocol) 디렉터리나 데이터베이스 등의 다른 특성 공급자에 연결합니다.
  • Azure VM(가상 머신) 또는 온-프레미스 서버에서 실행되는 Maverics Identity Orchestrator의 인스턴스. 소프트웨어 및 설명서를 얻으려면 strata.io Strata Identity에 문의로 이동합니다.
  • Azure AD B2C로 전환하는 온-프레미스 애플리케이션

시나리오 설명

Maverics Identity Orchestrator 통합은 다음 구성 요소를 포함합니다.

  • Azure AD B2C - 사용자 자격 증명을 확인하는 권한 부여 서버
    • 인증된 사용자는 Azure AD B2C 디렉터리에서 로컬 계정을 사용하여 온-프레미스 앱에 액세스합니다.
  • 외부 소셜 또는 엔터프라이즈 IdP(ID 공급자): OIDC 공급자, Facebook, Google 또는 GitHub
  • Strata Maverics Identity Orchestrator: HTTP 헤더를 통해 ID를 앱에 전달하는 사용자 로그온 서비스

다음 아키텍처 다이어그램은 구현된 상황을 보여줍니다.

Diagram of the Azure AD B2C integration architecture, with Maverics Identity Orchestrator, for access to hybrid apps.

  1. 사용자는 온-프레미스에 호스트된 애플리케이션에 대한 액세스를 요청합니다. Maverics Identity Orchestrator는 해당 요청을 애플리케이션에 프록시합니다.
  2. Orchestrator는 사용자의 인증 상태를 확인합니다. 세션 토큰이 없거나 토큰이 유효하지 않은 경우 사용자는 인증을 위해 Azure AD B2C로 이동합니다.
  3. Azure AD B2C는 구성된 소셜 IdP로 인증 요청을 보냅니다.
  4. IdP는 사용자에게 자격 증명을 요구합니다. MFA(다단계 인증)가 필요할 수 있습니다.
  5. IdP는 인증 응답을 Azure AD B2C에 보냅니다. 사용자는 Azure AD B2C 디렉터리에서 로컬 계정을 만들 수 있습니다.
  6. Azure AD B2C는 Azure AD B2C 테넌트에서 Orchestrator 앱 등록 중에 지정된 엔드포인트에 사용자 요청을 보냅니다.
  7. Orchestrator는 앱에 전달된 HTTP 헤더에 대한 액세스 정책 및 특성 값을 평가합니다. Orchestrator는 다른 특성 공급자를 호출하여 헤더 값을 설정하는 정보를 검색할 수 있습니다. Orchestrator는 요청을 앱에 보냅니다.
  8. 사용자가 인증되며 앱에 액세스할 수 있습니다.

Maverics Identity Orchestrator

소프트웨어 및 설명서를 얻으려면 strata.io Strata Identity에 문의로 이동합니다. Orchestrator 필수 조건을 확인합니다. 설치 및 구성

Azure AD B2C 테넌트 구성

다음 지침에서 설명하는 항목:

  • 테넌트 이름 및 식별자
  • 클라이언트 ID
  • 클라이언트 암호
  • 구성된 클레임
  • 리디렉션 URI
  1. Azure AD B2C 테넌트에서 Azure Active Directory B2C에 웹 애플리케이션을 등록합니다.
  2. 애플리케이션에 Microsoft MS Graph API 권한을 부여합니다. offline_access, openid 권한을 사용합니다.
  3. Orchestrator Azure AD B2C 커넥터 구성의 oauthRedirectURL 매개 변수와 일치하는 리디렉션 URI를 추가합니다(예: https://example.com/oidc-endpoint).
  4. Azure Active Directory B2C에서 사용자 흐름 및 사용자 지정 정책을 만듭니다.
  5. Azure Active Directory B2C 테넌트에 ID 공급자를 추가합니다. 로컬 계정, 소셜 또는 엔터프라이즈를 사용하여 사용자를 로그인시킵니다.
  6. 등록 중에 수집할 특성을 정의합니다.
  7. Orchestrator 인스턴스를 통해 애플리케이션에 반환할 특성을 지정합니다.

참고 항목

Orchestrator는 Azure AD B2C에서 반환된 클레임의 특성을 사용하며 LDAP 디렉터리 및 데이터베이스와 같은 연결된 기타 ID 시스템에서 특성을 검색할 수 있습니다. 해당 특성은 HTTP 헤더에 포함되며 업스트림 온-프레미스 애플리케이션에 전송됩니다.

Maverics Identity Orchestrator 구성하기

다음 섹션의 지침을 사용하여 Orchestrator 인스턴스를 구성합니다.

Maverics Identity Orchestrator 서버 요구 사항

온-프레미스이건 Azure, AWS, GCP와 같은 공급자의 퍼블릭 클라우드 인프라이건 관계없이 모든 서버에서 Orchestrator 인스턴스를 실행할 수 있습니다.

  • 운영 체제: REHL 7.7 이상, CentOS 7 이상
  • 디스크: 10GB(소형)
  • 메모리: 16GB
  • 포트: 22(SSH/SCP), 443, 80
  • 루트 액세스: 설치/관리 작업용
  • Maverics Identity Orchestrator: systemd에서 maverics 사용자로 실행됨
  • 네트워크 송신: Microsoft Entra 테넌트에 도달할 수 있는 Maverics Identity Orchestrator를 호스트 서버에서

Maverics Identity Orchestrator 설치

  1. 최신 Maverics RPM 패키지를 받습니다.

  2. Maverics를 설치할 시스템에 패키지를 배치합니다. 원격 호스트에 복사하는 경우 SSH scp를 사용합니다.

  3. 다음 명령을 실행합니다. 파일 이름을 사용하여 maverics.rpm을 바꿉니다.

    sudo rpm -Uvf maverics.rpm

    기본적으로 Maverics는 /usr/local/bin 디렉터리에 있습니다.

  4. Maverics는 systemd에서 서비스로 실행됩니다.

  5. Maverics 서비스가 실행 중인지 확인하려면 다음 명령을 실행합니다.

    sudo service maverics status

  6. 다음과 같은 메시지가 나타납니다.

Redirecting to /bin/systemctl status maverics.service
  maverics.service - Maverics
  Loaded: loaded (/etc/systemd/system/maverics.service; enabled; vendor preset: disabled)
  Active: active (running) since Thu 2020-08-13 16:48:01 UTC; 24h ago
  Main PID: 330772 (maverics)
  Tasks: 5 (limit: 11389)
  Memory: 14.0M
  CGroup: /system.slice/maverics.service
          └─330772 /usr/local/bin/maverics --config /etc/maverics/maverics.yaml

참고 항목

Maverics가 시작되지 않으면 다음 명령을 실행합니다.

journalctl --unit=maverics.service --reverse

가장 최근 로그 항목이 출력에 나타납니다.

  1. 기본 maverics.yaml 파일은 /etc/maverics 디렉터리에 만들어집니다.
  2. 애플리케이션을 보호하도록 Orchestrator를 구성합니다.
  3. Azure AD B2C와 통합하고 저장합니다.
  4. Azure Key Vault에서 비밀을 검색합니다.
  5. Orchestrator가 해당 구성을 읽는 원본 위치를 정의합니다.

환경 변수를 사용하여 구성 제공하기

환경 변수를 사용하여 Orchestrator 인스턴스를 구성합니다.

MAVERICS_CONFIG

이 환경 변수는 사용할 YAML 구성 파일과 시작하거나 다시 시작하는 동안 해당 파일을 찾을 위치를 Orchestrator 인스턴스에 알립니다. /etc/maverics/maverics.env의 환경 변수를 설정합니다.

Orchestrator의 TLS 구성 만들기

maverics.yamltls 필드는 Orchestrator 인스턴스가 사용하는 전송 레이어 보안 구성을 선언합니다. 커넥터는 TLS 개체 및 Orchestrator 서버를 사용합니다.

maverics 키는 Orchestrator 서버용으로 예약되어 있습니다. 기타 키를 사용하여 TLS 개체를 커넥터에 삽입합니다.

tls:
  maverics:
    certFile: /etc/maverics/maverics.cert
    keyFile: /etc/maverics/maverics.key

Azure AD B2C 커넥터 구성하기

Orchestrator는 커넥터를 통해 인증 및 특성 공급자와 통합합니다. Orchestrator App Gateway는 Azure AD B2C 커넥터를 인증 및 특성 공급자로 사용합니다. Azure AD B2C는 인증에 소셜 IdP를 사용한 다음, Orchestrator에 특성을 제공하여 HTTP 헤더에 설정된 클레임으로 특성을 전달합니다.

커넥터 구성은 Azure AD B2C 테넌트에 등록된 앱과 일치합니다.

  1. 앱 구성에서 클라이언트 ID, 클라이언트 암호 및 리디렉션 URI를 테넌트에 복사합니다.
  2. 커넥터 이름을 입력합니다(예: azureADB2C).
  3. 커넥터 typeazure로 설정합니다.
  4. 커넥터 이름을 기록해 둡니다. 다른 구성 매개 변수에서 이 값을 사용합니다.
  5. authTypeoidc로 설정합니다.
  6. oauthClientID 매개 변수의 경우 복사한 클라이언트 ID를 설정합니다.
  7. oauthClientSecret 매개 변수의 경우 복사한 클라이언트 암호를 설정합니다.
  8. oauthRedirectURL 매개 변수의 경우 복사한 리디렉션 URI를 설정합니다.
  9. Azure AD B2C OIDC 커넥터는 OIDC 엔드포인트를 사용하여 URL 및 서명 키를 비롯한 메타데이터를 검색합니다. 테넌트 엔드포인트의 경우 oidcWellKnownURL을 사용합니다.
connectors:
  name: azureADB2C
  type: azure
  oidcWellKnownURL: https://<tenant name>.b2clogin.com/<tenant name>.onmicrosoft.com/B2C_1_login/v2.0/.well-known/openid-configuration
  oauthRedirectURL: https://example.com/oidc-endpoint
  oauthClientID: <azureADB2CClientID>
  oauthClientSecret: <azureADB2CClientSecret>
  authType: oidc

인증 공급자로 Azure AD B2C 정의

인증 공급자는 앱 리소스 요청 중에 유효한 세션을 제공하지 않는 사용자에 대한 인증을 결정합니다. Azure AD B2C 테넌트 구성은 다른 인증 정책을 적용하는 동안 사용자에게 자격 증명을 요구하는 방법을 결정합니다. 예를 들어, 인증을 완료하기 위해 두 번째 요소를 요구하고 인증 후에 Orchestrator App Gateway에 반환되는 항목을 결정합니다.

authProvider의 값은 커넥터 name 값과 일치해야 합니다.

authProvider: azureADB2C

Orchestrator App Gateway를 사용하여 온-프레미스 앱 보호

Orchestrator App Gateway 구성은 Azure AD B2C가 애플리케이션을 보호하는 방법 및 사용자가 앱에 액세스하는 방법을 선언합니다.

  1. 앱 게이트웨이 이름을 입력합니다.
  2. location를 설정합니다. 이 예제에서는 앱 루트 /를 사용합니다.
  3. upstream에서 보호된 애플리케이션을 정의합니다. host:port 규칙(https://example.com:8080)을 사용합니다.
  4. 오류 및 권한이 없는 페이지에 대해 값을 설정합니다.
  5. 애플리케이션에 대한 HTTP 헤더 이름 및 특성 값을 정의하여 인증을 설정하고 제어합니다. 일반적으로 헤더 이름은 앱 구성과 일치합니다. 특성 값은 커넥터에 의해 네임스페이스됩니다. 이 예제에서 Azure AD B2C에서 반환된 값에는 커넥터 이름 azureADB2C가 접두사로 추가됩니다. 접미사는 필요한 값이 있는 특성 이름입니다(예: given_name).
  6. 정책을 설정합니다. allowUnauthenticated, allowAnyAuthenticatedallowIfAny, 세 가지 작업이 정의됩니다. 각 작업은 resource와 연결됩니다. 정책은 해당 resource에 대해 평가됩니다.

참고 항목

headerspolicies는 JavaScript 또는 GoLang 서비스 확장을 사용하여 임의 논리를 구현합니다.

appgateways:
  - name: Sonar
    location: /
    upstream: https://example.com:8080
    errorPage: https://example.com:8080/sonar/error
    unauthorizedPage: https://example.com:8080/sonar/accessdenied

    headers:
      SM_USER: azureADB2C.sub
      firstname: azureADB2C.given_name
      lastname: azureADB2C.family_name

    policies:
      - resource: ~ \.(jpg|png|ico|svg)
        allowUnauthenticated: true
      - resource: /
        allowAnyAuthenticated: true
      - resource: /sonar/daily_deals
        allowIfAny:
          azureADB2C.customAttribute: Rewards Member

비밀 공급자로서 Azure Key Vault

Orchestrator가 Azure AD B2C 및 기타 ID 시스템 연결에 사용하는 비밀을 보호합니다. Maverics는 비밀을 maverics.yaml에서 일반 텍스트로 로드하지만 이 자습서에서는 Azure Key Vault를 비밀 공급자로 사용합니다.

빠른 시작: Azure Portal을 사용하여 Azure Key Vault에서 비밀을 설정하고 검색의 지침을 따릅니다. 자격 증명 모음에 비밀을 추가하고 각 비밀에 대한 SECRET NAME을 기록해 둡니다. 예: AzureADB2CClientSecret.

maverics.yaml 구성 파일에서 값을 비밀로 선언하려면 비밀을 꺾쇠 괄호로 묶습니다.

connectors:
  - name: AzureADB2C
    type: azure
    oauthClientID: <AzureADB2CClientID>
    oauthClientSecret: <AzureADB2CClientSecret>

꺾쇠 괄호 내의 값은 Azure Key Vault에 비밀로 제공된 SECRET NAME과 일치해야 합니다.

Azure Key Vault에서 비밀을 로드하려면 azure-credentials.json 파일에 있는 자격 증명을 통해 /etc/maverics/maverics.env 파일에서 MAVERICS_SECRET_PROVIDER 환경 변수를 설정합니다. 다음 패턴을 사용합니다.

MAVERICS_SECRET_PROVIDER='azurekeyvault://<KEYVAULT NAME>.vault.azure.net?clientID=<APPID>&clientSecret=<PASSWORD>&tenantID=<TENANT>'

구성 완료

다음 정보는 Orchestrator 구성이 표시되는 방법을 보여 줍니다.

version: 0.4.2
listenAddress: ":443"
tls:
  maverics:
    certFile: certs/maverics.crt
    keyFile: certs/maverics.key

authProvider: azureADB2C

connectors:
  - name: azureADB2C
    type: azure
    oidcWellKnownURL: https://<tenant name>.b2clogin.com/<tenant name>.onmicrosoft.com/B2C_1_login/v2.0/.well-known/openid-configuration
    oauthRedirectURL: https://example.com/oidc-endpoint
    oauthClientID: <azureADB2CClientID>
    oauthClientSecret: <azureADB2CClientSecret>
    authType: oidc

appgateways:
  - name: Sonar
    location: /
    upstream: http://example.com:8080
    errorPage: http://example.com:8080/sonar/accessdenied
    unauthorizedPage: http://example.com:8080/sonar/accessdenied

    headers:
      SM_USER: azureADB2C.sub
      firstname: azureADB2C.given_name
      lastname: azureADB2C.family_name

    policies:
      - resource: ~ \.(jpg|png|ico|svg)
        allowUnauthenticated: true
      - resource: /
        allowAnyAuthenticated: true
      - resource: /sonar/daily_deals
        allowIfAny:
          azureADB2C.customAttribute: Rewards Member

흐름 테스트

  1. 온-프레미스 애플리케이션 URL로 이동합니다https://example.com/sonar/dashboard.
  2. Orchestrator는 사용자 흐름 페이지로 리디렉션됩니다.
  3. 목록에서 IdP를 선택합니다.
  4. IdP가 요구하는 경우 MFA 토큰을 포함한 자격 증명을 입력합니다.
  5. 앱 요청을 Orchestrator 리디렉션 URI에 전달하는 Azure AD B2C로 리디렉션됩니다.
  6. Orchestrator는 정책을 평가하고 헤더를 계산합니다.
  7. 요청한 애플리케이션이 나타납니다.

다음 단계