다음을 통해 공유


AD FS를 사용하여 포털용 SAML 2.0 공급자 구성

참고

2022년 10월 12일부터 Power Apps 포털이 Power Pages가 됩니다. 추가 정보: Microsoft Power Pages는 이제 일반적으로 사용할 수 있습니다(블로그)
곧 Power Apps 포털 설명서를 마이그레이션하고 Power Pages 설명서와 병합할 예정입니다.

중요

AD FS(Active Directory Federation Services) 구성 단계는 AD FS 서버 버전에 따라 다를 수 있습니다.

AD FS 신뢰 당사자 신뢰 만들기

참고

PowerShell 스크립트에서 이러한 단계를 수행하는 방법에 대한 정보는 PowerShell을 사용하여 AD FS 구성을 참조하세요.

  1. AD FS 관리 도구를 사용하여 서비스 > 클레임 설명으로 이동합니다.

    1. 클레임 설명 추가를 선택합니다.

    2. 클레임 지정:

      • 표시 이름: 영구 식별자

      • 클레임 식별자: urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

      • 다음에 대한 확인란 활성화: 페더레이션 메타데이터에 페더레이션 서비스가 허용할 수 있는 클레임 형식으로 이 클레임 설명을 게시

      • 다음에 대한 확인란 활성화: 페더레이션 메타데이터에 페더레이션 서비스가 허용할 수 있는 클레임 형식으로 이 클레임 설명을 보내기

    3. 확인을 선택합니다.

  2. AD FS 관리 도구를 사용하여 신뢰 관계 > 신뢰 당사자 신뢰를 순서대로 선택합니다.

    1. 신뢰 당사자 신뢰 추가를 선택합니다.

    2. 시작: 시작을 선택합니다.

    3. 데이터 원본 선택: 수동으로 신뢰 당사자에 대한 데이터 입력을 선택한 다음, 다음을 선택합니다.

    4. 표시 이름 지정: 이름을 입력한 다음, 다음을 선택합니다. 예: https://portal.contoso.com/

    5. 프로필 선택: AD FS 2.0 프로필을 선택한 다음 다음을 선택합니다.

    6. 인증서 구성: 다음을 선택합니다.

    7. URL 구성: SAML 2.0 WebSSO 프로토콜에 대한 지원 활성화 확인란을 선택합니다. 신뢰 당사자 SAML 2.0 SSO 서비스 URL: https://portal.contoso.com/signin-saml2 입력
      참고: AD FS에는 HTTPS에서 실행되는 포털이 필요합니다.

      참고

      결과 끝점은 다음의 설정을 가집니다.

    8. ID 구성: https://portal.contoso.com/을 입력하고 추가를 선택한 후 다음을 선택합니다. 해당되는 경우, 각 추가 신뢰 당사자 포털에 대해 더 많은 ID를 추가할 수 있습니다. 사용자는 이용 가능한 ID라면 어떤 ID라도 인증할 수 있습니다.

    9. 발급 인증 규칙 선택: 모든 사용자가 이 신뢰 당사자에 액세스하도록 허용을 클릭한 다음 다음을 선택합니다.

    10. 신뢰 추가 준비 완료: 다음을 선택합니다.

    11. 닫기를 선택합니다.

  3. 이름 ID 클레임을 신뢰 당사자 신뢰에 추가:

    Windows 계정 이름이름 ID 클레임으로 변환(수신 클레임 변환):

    • 수신 클레임 유형: Windows 계정 이름

    • 발신 클레임 유형: 이름 ID

    • 발신 이름 ID 형식: 영구 식별자

    • 모든 클레임 값 통과

SAML 2.0 공급자 구성

AD FS 신뢰 당사자 신뢰를 설정한 후 포털용 SAML 2.0 공급자 구성 단계를 진행할 수 있습니다.

ID 공급자– 로그인 시작

AD FS는 SAML 2.0 사양ID 공급자–개시 SSO(Single Sign-On) 프로필을 지원합니다. ID 공급자가 시작한 SAML 요청에 포털(서비스 공급자)이 적절히 반응하기 위해서는 RelayState 매개 변수가 바르게 인코딩되어야 합니다.

SAML RelayState 매개 변수로 인코딩할 기본 문자열 값은 ReturnUrl=/content/sub-content/ 형식이어야 하며, 여기서 /content/sub-content/은 포털(서비스 공급자)에서 원하는 웹 페이지로 이동하는 경로입니다. 경로는 포털의 어떠한 유효한 웹 페이지로든 대체할 수 있습니다. 문자열 값은 RPID=&lt;URL encoded RPID&gt;&RelayState=&lt;URL encoded RelayState&gt; 형식의 컨테이너 문자열에 인코딩되고 배치됩니다. 전체 문자열은 <https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=&lt;URL> encoded RPID/RelayState&gt; 형식의 다른 컨테이너에 한 번 더 인코딩되고 추가됩니다.

예를 들면, 서비스 공급자 경로 /content/sub-content/와 신뢰 당사자 ID https://portal.contoso.com/에 따라 다음 단계를 사용하여 URL을 구성합니다.

  • ReturnUrl%3D%2Fcontent%2Fsub-content%2F를 위해 ReturnUrl=/content/sub-content/ 값을 인코딩

  • https%3A%2F%2Fportal.contoso.com%2F를 위해 https://portal.contoso.com/ 값을 인코딩합니다

  • RPID%3Dhttps%253A%252F%252Fportal.contoso.com%252F%26RelayState%3DReturnUrl%253D%252Fcontent%252Fsub-content%252F를 위해 RPID=https%3A%2F%2Fportal.contoso.com%2F&RelayState=ReturnUrl%3D%2Fcontent%2Fsub-content%2F 값을 인코딩

  • AD FS ID 공급자–개시 SSO를 경로 앞에 추가하여 최종 URL https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=RPID%3Dhttps%253A%252F%252Fportal.contoso.com%252F%26RelayState%3DReturnUrl%253D%252Fcontent%252Fsub-content%252F를 얻습니다.

다음 PowerShell 스크립트를 사용하여 URL을 구성할 수 있습니다. 스크립트를 Get-IdPInitiatedUrl.ps1이라는 파일에 저장합니다.

<#

.SYNOPSIS 

Constructs an IdP-initiated SSO URL to access a portal page on the service provider.

.PARAMETER path

The path to the portal page.

.PARAMETER rpid

The relying party identifier.

.PARAMETER adfsPath

The AD FS IdP initiated SSO page.

.EXAMPLE

PS C:\\> .\\Get-IdPInitiatedUrl.ps1 -path "/content/sub-content/" -rpid "https://portal.contoso.com/" -adfsPath "https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx"

#>

param

(

[parameter(mandatory=$true,position=0)]

$path,

[parameter(mandatory=$true,position=1)]

$rpid,

[parameter(position=2)]

$adfsPath = https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx

)

$state = ReturnUrl=$path

$encodedPath = [uri]::EscapeDataString($state)

$encodedRpid = [uri]::EscapeDataString($rpid)

$encodedPathRpid = [uri]::EscapeDataString("RPID=$encodedRpid&RelayState=$encodedPath")

$idpInitiatedUrl = {0}?RelayState={1} -f $adfsPath, $encodedPathRpid

Write-Output $idpInitiatedUrl

PowerShell을 사용하여 AD FS 구성

AD FS에 신뢰 당사자 신뢰를 추가하는 프로세스는 AD FS 서버에서 다음 PowerShell 스크립트를 실행하여 수행할 수도 있습니다. 스크립트를 Add-AdxPortalRelyingPartyTrustForSaml.ps1이라는 파일에 저장합니다. 스크립트를 실행한 다음 포털 사이트 설정 구성을 계속하십시오.

<# 

.SYNOPSIS

Adds a SAML 2.0 relying party trust entry for a website.

.PARAMETER domain

The domain name of the portal.

.EXAMPLE

PS C:\\> .\\Add-AdxPortalRelyingPartyTrustForSaml.ps1 -domain portal.contoso.com

#>

param

(

[parameter(Mandatory=$true,Position=0)]

$domain,

[parameter(Position=1)]

$callbackPath = /signin-saml2

)

$VerbosePreference = Continue

$ErrorActionPreference = Stop

Import-Module adfs

Function Add-CrmRelyingPartyTrust

{

param (

[parameter(Mandatory=$true,Position=0)]

$name

)

$identifier = https://{0}/ -f $name

$samlEndpoint = New-ADFSSamlEndpoint -Binding POST -Protocol SAMLAssertionConsumer -Uri (https://{0}{1} -f $name, $callbackPath)

$identityProviderValue = Get-ADFSProperties | % { $_.Identifier.AbsoluteUri }

$issuanceTransformRules = @'

@RuleTemplate = MapClaims

@RuleName = Transform [!INCLUDE[pn-ms-windows-short](../../../includes/pn-ms-windows-short.md)] Account Name to Name ID claim

c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]

=> issue(Type = "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType, Properties["https://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format"] = "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent");

@RuleTemplate = LdapClaims

@RuleName = Send LDAP Claims

c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]

=> issue(store = "[!INCLUDE[pn-active-directory](../../../includes/pn-active-directory.md)]", types = ("https://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname", "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname", "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"), query = ";givenName,sn,mail;{{0}}", param = c.Value);

'@ -f $identityProviderValue

$issuanceAuthorizationRules = @'

@RuleTemplate = AllowAllAuthzRule

=> issue(Type = https://schemas.microsoft.com/authorization/claims/permit, Value = true);

'@

Add-ADFSRelyingPartyTrust -Name $name -Identifier $identifier -SamlEndpoint $samlEndpoint -IssuanceTransformRules $issuanceTransformRules -IssuanceAuthorizationRules $issuanceAuthorizationRules

}

# add the 'Identity Provider' claim description if it is missing


[!INCLUDE[cc-pages-ga-banner](../../../includes/cc-pages-ga-banner.md)]

if (-not (Get-ADFSClaimDescription | ? { $_.Name -eq Persistent Identifier })) {

Add-ADFSClaimDescription -name "Persistent Identifier" -ClaimType "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" -IsOffered:$true -IsAccepted:$true

}

# add the portal relying party trust


[!INCLUDE[cc-pages-ga-banner](../../../includes/cc-pages-ga-banner.md)]

Add-CrmRelyingPartyTrust $domain

SAML 2.0 공급자 구성

AD FS 신뢰 당사자 신뢰를 설정한 후 포털용 SAML 2.0 공급자 구성 단계를 진행할 수 있습니다.

참조 항목

Azure AD를 사용하여 포털용 SAML 2.0 공급자 구성
포털에서 SAML 2.0 사용에 대한 FAQ
포털용 SAML 2.0 공급자 구성

참고

귀사의 설명서 언어 기본 설정에 대해 말씀해 주시겠습니까? 간단한 설문 조사에 응해주세요. (이 설문 조사는 영어로 되어 있습니다.)

이 설문 조사는 약 7분 정도 걸립니다. 개인 데이터는 수집되지 않습니다(개인정보처리방침).