이전에 Exchange 2016 기준으로도 진행부분과 차이는 없습니다, 이번에는 2019 기준으로 진행해 보겠습니다.

 

사전 구성되어 있는 VM 환경은 다음과 같습니다.

AD(2019),  Exchange Server 2019, ADFS(2019), WAP(2019)

OWA URL: https://mail.contoso.kr/owa

ECP URL: https://mail.contoso.kr/ecp

 

 

아래의 기술자료를 기준으로 진행하고, ADFS WAP 구축 이미 되어 있다는 전제하에 진행하였습니다.

Use AD FS claims-based authentication with Outlook on the web

https://docs.microsoft.com/en-us/exchange/clients/outlook-on-the-web/ad-fs-claims-based-auth?view=exchserver-2019#step-1-review-the-certificate-requirements-for-ad-fs

 

Step 1: Review the certificate requirements for AD FS

우선 표시한 것처럼 어느 서버에 어느 인증서 설치가 필요한지 확인합니다.

Adfs.contoso.com ADFS 인증서를 의미하는 것으로 생각됩니다.

경우에는 sts.contoso.kr 이며, ADFS, WAP 기본 구성을 해놓았기 때문에 별도 작업은 진행하지 않았습니다.

ADFS Signing -adfs.contoso.com 아래의 Token-signing 의미 하며, WAP Exchange Server 각각 설치해야합니다.

아래의 문구 처럼 신뢰할 있는 루트 인증 저장소에 가져오기를 진행해야 합니다.

you'll need to manually import it into the Trusted Root Certificate store on all Exchange servers in your organization.

인증서를 우클릭 - View Certificate

Copy to File

내보내기를 진행합니다.


가져온 인증서 파일을 각각의 서버에 복사한 , 우클릭 - Install Certificate


Local Machine - Next

Browse


Trusted Root Certification Authorities


Next


Finish


mail.contoso.com - 부분은 Exchange Server 인증서를 의미합니다. Exchange WAP 설치가 필요한데, Exchange 이미 설치되어 있으며, WAP에서는 통과인증 설정시 보통 구성해 놓습니다.


만약 내보내기 과정이 필요하다면, ECP 페이지에서 진행하면 됩니다.

Step2 ~Step3 ADFS 구성 포스팅을 참고하면 것으로 보입니다.

 

Step 4: Create a relying party trust and custom claim rules in AD FS for Outlook on the web and the EAC

 

아래는 기계번역이기 때문에 대략적으로 이해하면 됩니다. 간략하게 "ADFS에서 OWA ECP 대해서 클레임 규칙을 만들어야 한다" 핵심입니다.

On the Exchange server, Outlook on the web uses the virtual directory named owa and the EAC uses the virtual directory named ecp.

 

The trailing slash (/) that's used in the Outlook on the web and EAC URL values is intentional. It's important that the AD FS relying party trusts and Exchange Audience URI's are identical. They both must have or both must omit the trailing slashes in their URLs. The examples in this section contain the trailing slashes after the owa and ecp URLs (owa/ and ecp/).

 

In organizations with multiple Active Directory sites that use separate namespaces (for example, eu.contoso.com and na.contoso.com), you need to configure relying party trusts for each namespace for both Outlook on the web and the EAC.

 

Exchange 서버에서 웹용 Outlook은 라는 가상 디렉터리를 사용 하 owa 고 EAC는 이라는 가상 디렉터리를 사용 합니다 ecp .

/웹용 Outlook 및 EAC URL 값에 사용 되는 후행 슬래시 ()는 의도적인 것입니다. AD FS 신뢰 당사자 트러스트 및 Exchange 대상 그룹 URI가 동일해야 합니다. 두 경우 모두 url에서 후행 슬래시를 생략 해야 합니다. 이 섹션의 예에서는 owa 및 ecp Url (및) 다음의 후행 슬래시를 포함 합니다 owa/ ecp/ .

서로 다른 네임 스페이스를 사용 하는 여러 Active Directory 사이트가 포함 된 조직의 경우 (예: eu.contoso.com and na.contoso.com ), 웹에서 OUTLOOK과 EAC의 각 네임 스페이스에 대 한 신뢰 당사자 트러스트를 구성 해야 합니다.

 

 

Step 4a: Create relying party trusts in AD FS for Outlook on the web and the EAC

 

ADFS 에서 Powershell 아래와 같이 입력합니다.

#OWA 
Add-AdfsRelyingPartyTrust -Name "Outlook on the web" -Notes "This is a trust for https://mail.contoso.kr/owa/" -Identifier https://mail.contoso.kr/owa/ -WSFedEndpoint https://mail.contoso.kr/owa/ -IssuanceAuthorizationRules '@RuleTemplate = "AllowAllAuthzRule" => issue(Type = "http://schemas.microsoft.com/authorization/claims/permit", Value = "true");' -IssueOAuthRefreshTokensTo NoDevice
#ECP
Add-AdfsRelyingPartyTrust -Name EAC -Notes "This is a trust for https://mail.contoso.kr/ecp/" -Identifier https://mail.contoso.kr/ecp/ -WSFedEndpoint https://mail.contoso.kr/ecp/ -IssuanceAuthorizationRules '@RuleTemplate = "AllowAllAuthzRule" => issue(Type = "http://schemas.microsoft.com/authorization/claims/permit", Value = "true");' -IssueOAuthRefreshTokensTo NoDevice
 

Step 4b: Create custom claim rules in AD FS for Outlook on the web and the EAC

 

ADFS Powershell 에서 다음과 같이 입력하여 Claim Rule 생성합니다.

#OWA 
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);'
#ECP
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);'

Step 5c: Publish the claims relying party trusts for Outlook on the web and the EAC in Web Application Proxy

 

WAP에서 아래의  명령어로 인증서 지문값을 확인합니다.

#지문값 확인
Set-Location Cert:\LocalMachine\My; Get-ChildItem | Format-List FriendlyName,Subject,Thumbprint


아래의 명령어로 WAP Powershell에서 입력합니다.

#Relying Party in WAP
Add-WebApplicationProxyApplication -ExternalPreAuthentication ADFS -ADFSRelyingPartyName "Outlook on the web" -Name "Outlook on the web" -ExternalUrl https://mail.contoso.kr/owa/ -ExternalCertificateThumbprint 8CA4F1064543D39C77EC87EDC81ECAA775CA1140 -BackendServerUrl https://mail.contoso.kr/owa/

Add-WebApplicationProxyApplication -ExternalPreAuthentication ADFS -ADFSRelyingPartyName EAC -Name EAC -ExternalUrl https://mail.contoso.kr/ecp/ -ExternalCertificateThumbprint 8CA4F1064543D39C77EC87EDC81ECAA775CA1140 -BackendServerUrl https://mail.contoso.kr/ecp/

 

아래와 같이 추가된 것을 확인할 있습니다.

 

Step 6: Configure the Exchange organization to use AD FS authentication

 

아래의 명령어로 ADFS Signing 인증서의 지문값을 확인합니다.

#지문값 확인
Set-Location Cert:\LocalMachine\Root; Get-ChildItem | Sort-Object Subject



아래와 같이 Exchange Powershell 에서 입력합니다. 

#AdfsIssuer 변경
Set-OrganizationConfig -AdfsIssuer https://sts.contoso.kr/adfs/ls/ -AdfsAudienceUris "https://mail.contoso.kr/owa/","https://mail.contoso.kr/ecp/" -AdfsSignCertificateThumbprint "BF6F3C5189AE8FEB4D4AF24EBCACA0E52DB8D694"


Step 7: Configure AD FS authentication on the Outlook on the web and EAC virtual directories

 

Exchange Powershell 에서 다음과 같이 입력합니다.

#ECP변경
Get-EcpVirtualDirectory | Set-EcpVirtualDirectory -AdfsAuthentication $true -BasicAuthentication $false -DigestAuthentication $false -FormsAuthentication $false -WindowsAuthentication $false
#OWA변경
Get-OwaVirtualDirectory | Set-OwaVirtualDirectory -AdfsAuthentication $true -BasicAuthentication $false -DigestAuthentication $false -FormsAuthentication $false -WindowsAuthentication $false 


각각의 Exchange Server 에서 iisreset을 진행합니다.


OWA나 ECP에 접속을 진행하면,


아래와 같이 ADFS 페이지로 리디렉션되는 것을 확인할 수 있습니다.


로그인 완료 확인




반응형
  1. 독구 2021.09.28 19:07

    안녕하세요 여쭈어보고 싶어 댓글 남깁니다
    exchange 2016 서버를 adfs 클레임인증을 통해 리디렉션을 하고 싶어 선생님 블로그 보고 따라했습니다.
    뭔가 제대로 따라하지 못했는지 adfs에서 로그인하고 리디렉션 되면서 무한루프가 도는 문제가 있습니다. 어떻게 하면 좋을가요?

    • Pepuri 2021.09.29 16:34 신고

      우선 내부망과 외부망이 동일한지 확인이 필요할 것 같습니다. 외부망만 그렇다면 WAP 문제 일 것 같고, WAP은 꼭 AD FS인증으로 설정안해도 됩니다. 통과 인증으로 https://mail.contoso.kr 과 같이 설정하셔도 됩니다.

+ Recent posts