※ Azure AD

  • Azure 의 ID 솔루션 아키텍처
    • IAM(ID 및 액세스 관리) 아키텍처는 데이터 및 리소스를 보호하기 위한 프레임워크를 제공
    • ID 솔루션은 조직의 앱과 데이터에 대한 엑세스를 제어
      • 각 사용자, 디바이스, 애플리케이션에는 ID가 있으며, IAM 구성요소는 이러한 ID와 기타 ID의 인증및 권한부여를 지원


  • Active Directory 에서 Azure Active Directory로의 발전
    • Microsoft 는 여러 온프레미스 인프라 구성 요소 및 시스템을 관리할 수 있는 기능을 조직에 제공하기 위해 Windows 2000 에 Active Directory Domain Services 를 도입
    • Azure Active Directory 는 이 클라우드 및 온프레미스에서 모든 앱애 대한 IDaaS(Identity as a Service) 솔루션을 조직에 제공하여 이 접근 방식을 고도화



  • Azure Active Directory 란?
    • 클라우드 기반 ID 및 엑세스 관리 서비스(IAM)
    • Azure AD 를 통해 조직의 일원은 Microsoft 365, Azure Portal 및 수천개의 SaaS 기반 애플리케이션과 같은 외부 리소스에 엑세스가 가능하다.
    • 조직용으로 개발 된 클라우드 앱과, 사내 인트라넷 네트워크의 앱과 같은 내부 리소스에 엑세스 가능하도록 설정 가능하다.
    • 조직을 테넌트를 생성하여 관리 (*Tenant : 사전적 의미로 세입자를 의미하며, 서비스 이용자가 가지게 되는 자신만의 환경으로 프로젝트 단위 또는 팀 단위로 환경을 구축하여 관리, 애플리케이션 단위 다중 테넌트 지원)
    • AzureAD의 아키텍처는 주 복제본과 보조 복제본으로 구성
      • 주 복제본은 파티션의 모든 쓰기를 수신
      • 보조 복제본은 여러지역에 걸쳐 위치한 데이터 센터에 위치하며, 모든 디렉터리 읽기를 수신
    • 확장성, 지속적 가용성 등의 특징을 지님






    • STEP 1. Azure AD 에 Application 등록
      • Application 생성 후 생성된 파라미터 정보 확인
        • TenantID
        • ClientID
        • ClientSecret
        • Scope
        • Grant_Type=client_credentilas

    • STEP 2. 외부 인증서버 (External Authorization Server) 등록
      • Administration > Security > JWT/OAuth/OpenID > External authorization servers > add authorization server
      • Introspection
        • Issuer : 토큰 발행자
        • JWKS URI : JWT를 서명하는데 사용했던 public key를 제공하기 위해 JWK 형태로 표현된 key를 접근할 수있는 URL을 제공, 해당 URL에 접근하면 JWK 형태로 key를 다운로드 할 수 있다 (참고 - JWT JWK 의 이해)
      • Metadata
        • Authorize URL : Authorization Code, Client Id, Client Secret 교환을 위한 인증서버의 URL
        • Access Token URL : Authorized 된 사용자가 Access Token을 요청하기 위한 인증서버의 Endpoint URL
        • Refresh Token URL : Token을 Refresh 하기 위해 사용하는 인증서버의 Endpoint
      • Scope (Gateway의 Scope 설정 - API Scope와 Mapping)


    • STEP 3. API 에 Identify&Access 정책 적용
      • Identify & Authorize > Identification Type : JWT (Registered Applications) 적용

    • STEP 4. JWT 토큰 발급 (Azure AD API 사용)
      • Azure AD에 Get Access Token API 호출
        • [POST] https://login.microsoftonline.com/{Tenant-id}/oauth2/v2.0/token
        • Request Header
          • Content-Type : application/x-www-form-urlencoded
        • Request payload
          • grant_type : client_credentials
          • client_id : {생성 된 Application 의 Client_id}
          • client_secret : {생성 된 Application 의 Client_secret}
          • scope : {Application 의 Scope}
      • 발급 된 JWT 토큰은 https://jwt.ms 에서 디코딩 하여 Claim 확인 가능
        • apiid 값 저장

    • STEP 5. API Gateway에 Application 생성
      • 기본 APP 명 및 API 매핑
      • Claims에 STEP4 에서 저장한 appid 값 입력

    • STEP 6. Scope Mapping
      • Oauth/OpenID scopes > Map scope 에서 API Scope 와 External Authorization Server 의 Scope 매핑










  • Software AG Cloud 에서 Azure AD 를 SSO ID Provider 로 구성




  • SAML 이란 ?
    • Security Assertion Markup Language) 는 오픈소스 XML 표준
    • ID 공급자와 신뢰 당사자 또는 서비스 공급자 간 인증 및 권한 부여 정보를 교환하는데 이용
      • webMethods = 서비스 공급자 = SP
      • Azure AD = ID 공급자 = IDP
    • 신뢰 가능한 단일 ID 공급자에게 인증 프로세스를 위임 하여보안 및 관리 비용 절감의 이점


  • SAML 인증 작동 원리 (ex. IDP = Azure AD)
    • SAML 인증을 이용하면 사용자가 앱에 접근할때마다 SAML ID 공급자가 인증 프로세스를 전달 받음
    • 사용자 자격증명 (비밀번호, OTP, 컨텍스트 속성 등) 을 입력하면 ID 공급자가 확인
    • ID 공급자가 SAML Assertion 형식으로 접근 또는 거부 응답 반환
    • 인증에 성공하면 사용자에게 리소스 접근 권한을 부여하고 아닌 경우 접근 거부



  • Software AG webMethods API Gateway 에서 Azure AD 를 SAML IDP로 설정, SSO 구성
    • Administration > Security > SAML Issure 로 Azure AD 등록 (가능한지 테스트 필요)