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

https://blogs.technet.microsoft.com/rmilne/2017/06/20/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 으로 리디레션 되면서 로그인할  있습니다.


  1. 김진혁 2017.12.01 12:19 신고

    안녕하세요
    글 잘 보았습니다.
    SharePoint 2016 SSO를 지원 할려고 ADFS와 WAP를 살펴 보고 있습니다.
    여기서 사용할 인증서가 WildCard 인증서로도 가능합니까?

    • Pepuri 2017.12.02 16:27 신고

      Lync 서버를 제외한 나머지 서버 계열은 대부분 WildCard로 가능합니다.
      해보지는 않았지만 테크넷 기술자료 참고해서 하면 쉽게 가능할 것으로 보이네요

+ Recent posts