ADFS의 사용 목적은 사용자에게는 도메인 환경시 SSO 자동로그인을 가능하게 하며
관리자 입장에서는 외부망 접속 차단 및 조건부 액세스를 가능하게 해줍니다.
이전에 Exchange Server 2013 Claim 인증에 대해서 포스팅 한적이 있습니다.
그 포스팅글은 Script 를 통해서 쉽게 구성할 수 있었습니다.
이번에는 Script 가 아닌 기술자료에 나와있는데로 흐름을 보면서 진행해 보겠습니다.
(Script 로 진행하고자 한다면 구글 리서치로 쉽게 찾을 수 있을 것 입니다.)
AD FS 클레임 기반 인증을 사용 하 여 웹에서 Outlook 사용
https://technet.microsoft.com/ko-kr/library/dn635116(v=exchg.160).aspx
구성도는 대략 아래와 같습니다.
[단계1] 인증서 요구 사항 확인 및 검토
아래의 인증서는 3rd party 인증서가 필요합니다.
Exchange 는 구성단계에서 가져왔기 때문에 ADFS 사이트에 대해서만 사전에 요청작업을 진행합니다.
여기서는 ADFS 머신의 FQDN 은 FS0.limcm.com 이지만
ADFS 사이트에서 사용할 주소는 sts.limcm.com 입니다.
따라서 인증서 요청시 사용할 주소도 sts.limcm.com 입니다.
[단계2] ADFS 배포
도메인에 가입된 멤버서버에서 다음의 파워쉘 명령어로 역할 설치를 진행합니다.
Install-WindowsFeature ADFS-Federation -IncludeManagementTools
다음 명령어를 진행합니다.
Add-KdsRootKey -EffectiveTime (Get-Date).AddHours(-10)
Dashboard에서 새로고침 한 뒤 Configure the federation service on this server 를 클릭합니다.
Next
Next
인증서를 선택합니다. (저는 Exchange 인증서 신청시 sts.limcm.com 을 추가하였습니다.)
서비스 계정을 지정합니다. (예제에서는 administrator 로 편의상 진행)
DB 지정 - SQL 서버가 있는경우 SQL 로 지정할 수 있습니다.
(이번 포스팅에서는 WID 로 진행)
Next 를 쭉 진행 후 Configure - 완료 후 재부팅
DC DNS에서 Federation Service Name 에 대하여 A 레코드를 추가합니다.
아래의 URL 형태로 접속시 정상적으로 로그인 되는지 여부를 확인합니다.
https://<FederationServiceName>/adfs/ls/idpinitiatedsignon
예제
https://sts.limcm.com/adfs/ls/idpinitiatedsignon
Windows Server 2016 에서 구성시 아래와 같이 오류가 발생합니다.
How to Enable IdpInitiatedSignon Page In AD FS 2016
Get-AdfsProperties | Select-Object EnableIdpInitiatedSignonpage
아래의 명령어로 True 로 변경
Set-AdfsProperties –EnableIdpInitiatedSignonPage $True
로그인 테스트 성공
[단계3] Exchange 에 대한 ADFS 클레임 규칙 만들기
기술자료 상에서 ADFS 관리 콘솔에서 진행할 경우 Windows Server 2012 R2에서 진행할 경우 2016 하고 메뉴가 다를 수 있습니다.
ADFS 관리 콘솔과 Powershell 둘다 진행해본 결과 Powershell 이 간단하여 Powershell 로 진행하였습니다.
형광색 표시 부분을 사이트에 맞게 설정합니다.
Add-AdfsRelyingPartyTrust -Name "Outlook on the web" -Notes "This is a trust for https://mail.limcm.com/owa/" -Identifier https://mail.limcm.com/owa/ -WSFedEndpoint https://mail.limcm.com/owa/ -IssuanceAuthorizationRules '@RuleTemplate = "AllowAllAuthzRule" => issue(Type = "http://schemas.microsoft.com/authorization/claims/permit", Value = "true");' -IssueOAuthRefreshTokensTo NoDevice
Add-AdfsRelyingPartyTrust -Name "EAC" -Notes "This is a trust for https://mail.limcm.com/eac/" -Identifier https://mail.limcm.com/ecp/ -WSFedEndpoint https://mail.limcm.com/ecp/ -IssuanceAuthorizationRules '@RuleTemplate = "AllowAllAuthzRule" => issue(Type = "http://schemas.microsoft.com/authorization/claims/permit", Value = "true");' -IssueOAuthRefreshTokensTo NoDevice
Set-AdfsRelyingPartyTrust -TargetName "Outlook on the web" -IssuanceTransformRules '@RuleName = "ActiveDirectoryUserSID" c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => issue(store = "Active Directory", types = ("http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid"), query = ";objectSID;{0}", param = c.Value); @RuleName = "ActiveDirectoryUPN" c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"), query = ";userPrincipalName;{0}", param = c.Value);'
Set-AdfsRelyingPartyTrust -TargetName EAC -IssuanceTransformRules '@RuleName = "ActiveDirectoryUserSID" c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => issue(store = "Active Directory", types = ("http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid"), query = ";objectSID;{0}", param = c.Value); @RuleName = "ActiveDirectoryUPN" c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"), query = ";userPrincipalName;{0}", param = c.Value);' |
[단계4] Web Application Proxy (WAP)서버 구성 (옵션)
WAP은 옵션입니다. 외부망 구성시 443 포트는 여러개 필요하기때문에 IP도 여러 개 소비 됩니다.
WAP은 외부에서 들어오는 443 포트 기반의 URL 을 각각의 서버로 Redirection 해주기 때문에 보안 목적상으로나 IP 리소스 상으로나 유용합니다. WAP 활용법은 나중에 좀더 자세히 다루도록 하겠습니다.
WAP 서버는 ADFS 와 달리 Domain 에 Join 하지 않습니다.
Exchange Edge 서버와 유사하게 내부망 NIC 와 외부망 NIC 를 구분해서 설정합니다.
Federation Service Address 수동설정
탐색기 창에서 C:\Windows\System32\drivers\etc 경로로 이동합니다.
Hosts 파일을 더블클릭하여 Notepad 로 열어 줍니다. Federation Service Address, Exchange 주소를 지정합니다.
DNS 주소가 DC를 가르키지 않기 때문에 강제로 지정하기 위한 작업입니다.
ADFS, Exchange 에 사용한 인증서를 동일하게 WAP Local Machine에 설치합니다.
Dashboard 에서 Remote Access Role 설치
Web Application Proxy 체크 - Install
Open the Web Application Proxy Wizard
Next
Federation 정보를 입력합니다.
인증서 선택 - Next
Configure
Close
Remote Access Management 실행
Publish
Next
ADFS - Next
Next
Outlook on the web - Next
인증서 및 URL 지정 - Next
Publish
동일하게 EAC 도 Publish 합니다.
[단계5] Exchange Server 가상 디렉터리 설정
ADFS 머신에서 ADFS Management 를 실행합니다.
Service - Certificates - ADFS Signing 인증서를 우클릭 - View Certificate
Detail 에서 Copy to File - Exchange 서버로 복사 합니다.
Exchange 에서 Install Certificate
Local Machine 에 설치
ADFS 에서 Thumbprint 값을 확인합니다.
Get-AdfsCertificate -CertificateType Token-Signing | ft certificatetype,thumbprint
Exchange Management Shell 에서 다음 명령을 실행합니다.
Set-OrganizationConfig -AdfsIssuer https://<FederationServiceName>/adfs/ls/ -AdfsAudienceUris "<OotwURL>","<EACURL>" -AdfsSignCertificateThumbprint "<Thumbprint>"
예제
Set-OrganizationConfig -AdfsIssuer https://sts.limcm.com/adfs/ls/ -AdfsAudienceUris "https://mail.limcm.com/owa/","https://mail.limcm.com/ecp/" -AdfsSignCertificateThumbprint "238ED078DA94D340BA7F62F691868322A3B61113"
가상 디렉터리 구성
모든 Exchange 일괄 지정하려면 아래와 같이 진행합니다.
(개별 지정은 기술자료 참고)
Get-EcpVirtualDirectory | Set-EcpVirtualDirectory -AdfsAuthentication $true -BasicAuthentication $false -DigestAuthentication $false -FormsAuthentication $false -WindowsAuthentication $false
Get-OwaVirtualDirectory | Set-OwaVirtualDirectory -AdfsAuthentication $true -BasicAuthentication $false -DigestAuthentication $false -FormsAuthentication $false -OAuthAuthentication $false -WindowsAuthentication $false
Exchange Server 에서 IIS 재시작을 진행합니다.
iisreset /noforce
내부망, 외부망에서 OWA, ECP 사이트에 올바르게 접속되는지 확인합니다.
내부망에서 시도시 자격증명 창이 바로 나타나며, ADFS 서버를 거쳐서 로그인 됩니다.
정책설정에 따라서 로그인창이 나타나지 않고 도메인 환경이면 바로 로그인이 가능하게 설정할 수 있습니다.
외부망에서 접속시 mail.limcm.com -> sts.limcm.com 으로 리디레션 되면서 로그인할 수 있습니다.
'Exchange' 카테고리의 다른 글
Exchange Server 2016. 하이브리드 구성 (0) | 2017.11.25 |
---|---|
Exchange Server 2016. CU7 하이브리드 구성 오류 발생되는 증상 (0) | 2017.11.24 |
Exchange Sever 2016. Edge 구성 (0) | 2017.10.31 |
Exchange Server 2016. 설치(2) (2) | 2017.10.28 |
Exchange Server 2016. 설치(1) (0) | 2017.10.24 |