- References
- Active Directory 란 (Blog - 1)
- Active Directory 란 (Blog - 2)
- Microsoft Learn (Azure 의 ID)
- Microsoft Learn (Azure AD)
- webMethods API Gateway - Azure AD 연동 OpenID Connect (SAG Tech Forum)
- webMethods API Cloud - AzureAD 를 SSO Provider로 연동(SAG Tech Forum)
- Microsoft Learn (Integration Suite Tutorial)
- webMethods Developer Portal - Azure AD SSO 연동 (SAG Tech Forum)
- SAML 인증이란 - 1
- SAML 인증이란 - 2
- SSO (Single Sign-On) 정리 (SAML / OAuth / OIDC)
※ 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의 아키텍처는 주 복제본과 보조 복제본으로 구성
- 주 복제본은 파티션의 모든 쓰기를 수신
- 보조 복제본은 여러지역에 걸쳐 위치한 데이터 센터에 위치하며, 모든 디렉터리 읽기를 수신
- 확장성, 지속적 가용성 등의 특징을 지님
- webMethods API Gateway 를 사용 한 Azure AD 연동 (1. API 단위 OpenID 인증 정책 적용)
- Securing APIs using OAuth 2 in API Gateway (사전 참고 자료)
- 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 webMethods Integration Suite 에서 SSO ID Provider 로 구성
- Software AG Cloud 에서 Azure AD 를 SSO ID Provider 로 구성
- Azure AD Free-Trial로 테스트 가능
- 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 등록 (가능한지 테스트 필요)