FedUtil을 사용하여 ASP.NET 신뢰 당사자 응용 프로그램에서 STS로의 트러스트 설정

FedUtil.exe는 WIF(Windows® Identity Foundation)에 포함되어 있습니다. FedUtil.exe를 사용하면 RP(신뢰 당사자) 응용 프로그램에서 STS(보안 토큰 서비스)로의 트러스트를 설정할 수 있습니다. 여기에서는 다음과 같은 기능을 제공합니다.

  • 기존 프로덕션 STS를 RP 응용 프로그램의 신뢰할 수 있는 발급자로 등록합니다.

  • 로컬 STS를 제공하여 클레임 인식 응용 프로그램을 개발하는 데 도움을 줍니다.

  • 기존 응용 프로그램을 클레임 인식 응용 프로그램으로 만듭니다.

  • RP 응용 프로그램에 대한 페더레이션 메타데이터를 업데이트합니다.

  • RP 응용 프로그램에 대한 페더레이션 메타데이터의 자동 업데이트를 예약합니다.

다음 단원에서는 FedUtil을 사용하여 이러한 각 작업을 수행하는 방법을 보여 줍니다. RP 응용 프로그램의 web.config 파일을 직접 변경해도 FedUtil을 통해 수행하는 작업과 동일한 작업을 수행할 수 있습니다.

참고

FedUtil에서는 구성 파일을 변경하기 때문에 응용 프로그램의 기존 보안 구성이 변경될 수 있습니다. FedUtil에서는 필요하지 않은 기존 섹션을 삭제하지 않고 주석 처리하지만 FedUtil을 실행한 후 구성 파일을 검토하여 응용 프로그램이 의존하고 있는 보안 구성이 주석 처리되지 않았는지 확인해야 합니다. FedUtil은 기존 구성 파일을 백업합니다.

1. 로컬 STS 만들기

이 연습에서는 클레임 인식 ASP.NET 신뢰 당사자 응용 프로그램에서 사용할 로컬 STS를 만듭니다. 이 작업을 수행하려면 Visual Studio 내부에서 FedUtil을 실행해야 합니다. 이 옵션은 프로덕션용이 아닌 STS로 클레임 인식 신뢰 당사자 ASP.NET 응용 프로그램을 개발하는 데 사용됩니다. 프로덕션 STS를 사용하도록 전환하는 방법은 나중에 살펴보겠습니다.

참고

FedUtil이 제대로 작동하려면 Visual Studio를 관리자 모드에서 실행해야 합니다.

Visual Studio에서 "파일" 메뉴를 열고 "새로 만들기', "웹 사이트"를 차례로 선택합니다. "클레임 인식 ASP.NET 웹 사이트"를 선택합니다.

다음으로, 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 "STS 참조 추가"를 선택합니다.

79a0b161-f082-4c34-96e7-7da5d3126776

이렇게 하면 FedUtil 도구가 실행되고 "Welcome to Federation Utility tool(Federation Utility 도구 시작)" 페이지로 시작되는 FedUtil 대화 상자가 표시됩니다.

55362f83-729f-4ecb-84a6-7d7f18ce736a

이 페이지에서는 다음 두 개의 필드를 입력해야 합니다.

  1. 응용 프로그램 구성 위치: 서비스에 대한 web.config 파일의 경로를 지정합니다. Visual Studio 외부에서 FedUtil을 실행하거나 프로젝트를 열지 않은 상태로 Visual Studio의 "도구" 메뉴를 통해 FedUtil을 실행하는 경우 이 필드는 비어 있습니다. Visual Studio에서 프로젝트를 마우스 오른쪽 단추로 클릭하여 FedUtil을 실행하는 경우 이 필드에는 프로젝트의 web.config 파일에 대한 경로가 이미 들어 있습니다. web.config 파일은 기본 상태(Visual Studio에서 생성한 상태)로 이미 존재하고 있어야 합니다. 동일한 web.config 파일에서 FedUtil을 두 번 이상 실행하는 경우 FedUtil은 web.config 파일에 추가되는 내용을 덮어씁니다.

  2. 응용 프로그램 URI: ASP.NET 서비스의 URI를 지정합니다. 이 URI는 .svc 파일입니다. Visual Studio 외부에서 FedUtil을 실행하거나 프로젝트를 열지 않은 상태로 Visual Studio의 "도구" 메뉴를 통해 FedUtil을 실행하는 경우 이 필드는 비어 있습니다. Visual Studio에서 프로젝트를 마우스 오른쪽 단추로 클릭하여 FedUtil을 실행하는 경우 이 필드에는 프로젝트의 URI 두 개, 즉 localhost를 사용하는 URI와 컴퓨터의 정규화된 도메인 이름(사용할 수 있는 경우)을 사용하는 URI가 이미 들어 있습니다. 이 URI는 클레임에 대해 응용 프로그램을 구성하는 동안 realm 값으로 사용됩니다. 이 URI는 첫 번째 대상 URI로도 사용됩니다. 추가 대상 URI를 지정하려면 수동으로 지정해야 합니다. URI가 “https://”로 시작되는 보안 URI가 아니면 "다음"을 클릭할 때 경고가 표시됩니다.

정보 입력을 마쳤으면 "다음"을 클릭합니다. 보안 토큰 서비스 페이지가 표시됩니다. "현재 솔루션에 새 STS 프로젝트 만들기"를 선택합니다.

e49ab820-73fb-4c19-974b-0c00cb5970f3

Visual Studio 외부에서 FedUtil을 실행하거나 프로젝트를 열지 않은 상태로 Visual Studio의 "도구" 메뉴를 통해 FedUtil을 실행하는 경우에는 "현재 솔루션에 새 STS 프로젝트 만들기" 옵션을 사용할 수 없습니다.

"다음"을 클릭합니다. 요약 페이지가 나타납니다.

969492e8-73d1-4029-a797-28a77f28f004

요약 페이지에는 응용 프로그램 정보 대화 상자에 입력한 정보, 새 STS를 만들도록 선택했다는 내용, 응용 프로그램이 요청하는 클레임 및 FedUtil에 의해 응용 프로그램 구성에서 변경되는 내용이 표시됩니다.

"마침"을 클릭합니다.

web.config 파일을 보면 FedUtil에서 수정했음을 알 수 있습니다.

  • 다음과 같은 응용 프로그램 설정이 추가되었습니다.

    <appSettings> <add key="FederationMetadataLocation" value="C:\inetpub\wwwroot\ClaimsAwareWebSite1_STS\FederationMetadata\2007-06\FederationMetadata.xml" /> </appSettings>
    
  • 모든 사용자에게 페더레이션 메타데이터에 대한 액세스 권한이 부여되었습니다.

    <location path="FederationMetadata"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location>
    
  • WSFederationAuthenticationModuleSessionAuthenticationModule<system.Web>/<httpModules> 요소에 추가되었습니다.

    <httpModules> ... <add name="WSFederationAuthenticationModule" type="Microsoft.IdentityModel.Web.WSFederationAuthenticationModule, Microsoft.IdentityModel, Version=0.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> <add name="SessionAuthenticationModule" type="Microsoft.IdentityModel.Web.SessionAuthenticationModule, Microsoft.IdentityModel, Version=0.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> </httpModules>
    
  • <system.webServer>/<modules> 요소에도 추가되었습니다.

    <system.webServer> ... <modules> <add name="WSFederationAuthenticationModule" type="Microsoft.IdentityModel.Web.WSFederationAuthenticationModule, Microsoft.IdentityModel, Version=0.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler" /> <add name="SessionAuthenticationModule" type="Microsoft.IdentityModel.Web.SessionAuthenticationModule, Microsoft.IdentityModel, Version=0.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler" /> </modules> ... </system.webServer>
    
  • 마지막으로, <microsoft.identityModel>/<service> 요소가 다음과 같이 수정되었습니다.

    <microsoft.identityModel> <service> <audienceUris> <add value="https://localhost:58496/ClaimsAwareWebSite2/" /> </audienceUris> <federatedAuthentication enabled="true"> <wsFederation passiveRedirectEnabled="true" issuer="https://localhost:58497/ClaimsAwareWebSite2_STS/" realm="https://localhost:58496/ClaimsAwareWebSite2/" requireHttps="false" /> <cookieHandler requireSsl="false" /> </federatedAuthentication> <applicationService> <claimTypeRequired> <claimType type="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" optional="true" /> <claimType type="https://schemas.microsoft.com/ws/2008/06/identity/claims/role" optional="true" /> </claimTypeRequired> </applicationService> <issuerNameRegistry type="Microsoft.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"> <trustedIssuers> <add thumbprint="0E2A9EB75F1AFC321790407FA4B130E0E4E223E2" name="CN=STSTestCert" /> </trustedIssuers> </issuerNameRegistry> </service> </microsoft.identityModel>
    
    • <audienceUris> 요소가 클레임 인식 ASP.NET 신뢰 당사자 응용 프로그램의 URI를 지정하기 위해 추가됩니다.

    • <federatedAuthentication> 요소가 이 클레임 인식 ASP.NET 신뢰 당사자 응용 프로그램의 STS 위치를 지정하기 위해 추가됩니다. 이 연습에서는 로컬 STS를 사용합니다.

    • <applicationService>/<claimTypeRequired> 요소가 응용 프로그램에서 STS가 발급한 토큰에 요청하는 클레임을 지정하기 위해 추가됩니다. 이 연습에서는 기본 클레임 “이름”과 “역할”을 사용합니다. 신뢰 당사자는 이 클레임 유형 요구 사항에 실제로 종속되지는 않습니다. 다음 두 가지 이유로 구성 파일에 있는 것입니다.

      1. 신뢰 당사자 응용 프로그램은 이 클레임 유형 요구 사항을 사용하여 들어오는 토큰에 이 클레임이 있는지 확인합니다. ClaimsAuthenticationManager에서 이 작업을 수행할 수 있습니다.

      2. 그러면 신뢰 당사자는 간단한 방법으로 신뢰 당사자 응용 프로그램의 클레임 유형 요구 사항을 업데이트할 수 있습니다.

    • <issuerNameRegistry>/<trustedIssuers> 요소는 STS가 자신이 발급하는 토큰에 서명하는 데 사용할 인증서를 지정하기 위해 추가됩니다. STS는 기본 인증서를 사용하여 자신이 생성하는 토큰에 서명합니다. 이 인증서의 이름은 “STSTestCert”로 지정되며 STS에서 사용하도록 인증서 저장소에 자동으로 추가됩니다. 인증서 파일은 STS 프로젝트에 있습니다. 이 파일의 암호는 “STSTest”입니다. 이 파일은 프로덕션 환경에서는 사용하지 말아야 합니다. 기본 인증서를 다른 인증서로 대체할 수 있습니다. IIS 프로세스의 사용자는 이러한 인증서의 개인 키에 액세스할 수 있어야 합니다. IssuerNameRegistry에서 파생된 형식을 만들도록 선택하여 신뢰할 수 있는 발급자 인증서의 유효성을 프로그래밍 방식으로 검사할 수도 있습니다.

또한 솔루션 탐색기를 보면 FedUtil에서 솔루션에 새 프로젝트를 추가했음을 알 수 있습니다. 이 프로젝트는 로컬 STS입니다. 또한 페더레이션 메타데이터 문서가 신뢰 당사자 응용 프로그램 및 로컬 STS 모두에 추가되었음을 알 수 있습니다.

0d9713f7-ebf0-4741-8a85-6cb36d99ece2

이 로컬 STS에서 발급한 토큰은 암호화되어 있지 않습니다.

로컬 STS에서 발급하는 클레임을 추가하려면 App_Code 폴더의 STS 프로젝트에서 CustomSecurityTokenService.cs를 열고 GetOutputClaimsIdentity 메서드로 이동한 다음 클레임을 추가합니다.

2. 기존 프로덕션 STS 등록

이 연습에서는 ASP.NET 신뢰 당사자에서 기존 STS로 트러스트를 설정합니다.

Visual Studio에서 "파일" 메뉴를 열고 "새로 만들기', "웹 사이트"를 차례로 선택합니다. "클레임 인식 ASP.NET 웹 사이트"를 선택합니다. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 "STS 참조 추가"를 선택합니다. FedUtil 도구가 실행됩니다. "Welcome to the Federation Utility Tool(Federation Utility 도구 시작)" 페이지에서 응용 프로그램 구성 위치 및 응용 프로그램 URI가 올바른지 확인하고 "다음"을 클릭합니다.

응용 프로그램 정보 페이지에서 "기존 STS 사용"을 선택합니다.

18b594ce-a7da-4ca4-b025-756aa7ed156c

프로덕션 STS의 페더레이션 메타데이터 끝점 위치를 지정해야 합니다. "위치 테스트" 단추를 클릭하여 메타데이터 문서에 액세스할 수 있는지 확인할 수 있습니다. 이 단추를 누르면 지정된 끝점으로 요청이 전송되고 해당 응답이 기본 웹 브라우저에 표시됩니다. 이 연습에서는 AD FS(Active Directory® Federation Services) 2.0 STS를 사용합니다. 페더레이션 메타데이터 문서의 위치를 지정했으면 "다음"을 클릭합니다.

로컬 인증서 저장소에서 신뢰하지 않는 인증서를 가진 STS를 지정하면 “ID1025: 인증서 체인은 처리되었으나 신뢰 공급자가 신뢰하지 않는 루트 인증서로 끝납니다.”라는 경고 메시지가 표시됩니다. 그래도 계속하려면 "예"를 클릭합니다. 계속하지 않으려면 "아니요"를 클릭하고 다른 STS를 선택합니다.

다른 응용 프로그램 정보 페이지가 나타나고 이번에는 "암호화 안 함"과 "암호화 사용" 중에서 선택하도록 요청합니다.

STS 관리자에게 프로덕션 STS에서 토큰 암호화를 지원하는지 확인합니다. 암호화를 지원하면 암호화하는 것이 좋습니다. 이 연습에서는 "암호화 사용"을 선택합니다. 이제 신뢰 당사자에서 토큰을 암호화할 때 STS가 사용할 인증서를 선택해야 합니다.

기본 인증서를 사용하면 로컬 STS가 토큰 암호화를 위한 인증서를 이미 만든 경우 이 인증서가 암호 해독에도 사용됩니다. 프로덕션 STS는 로컬 STS에 사용한 인증서와 동일한 인증서를 사용하지 않을 가능성이 높으므로 프로덕션 STS를 등록할 때 이렇게 하는 경우는 흔하지 않습니다. 프로덕션 솔루션에서는 이 옵션을 사용하지 않아야 합니다. 서비스 인증서를 이미 가지고 있는 경우 이 인증서를 사용할 수 있습니다.

기존 인증서를 선택하면 로컬 인증서 저장소에 있는 인증서가 표시됩니다. 인증서에는 개인 키와 주체 이름이 있어야 합니다. 응용 프로그램을 실행한 ID(예: NETWORK SERVICE)는 이러한 인증서의 개인 키에 액세스할 수 있어야 합니다.

이 연습에서는 기본 인증서를 사용할 수도 있고 기존 인증서를 선택할 수도 있습니다. 완료되었으면 "다음"을 클릭합니다.

제공된 클레임 페이지가 나타납니다.

b310bfbc-3186-4d81-bacc-913aa80d8a33

이 페이지에는 STS에서 제공하는 클레임 목록이 들어 있습니다. FedUtil은 STS에서 메타데이터를 다운로드한 다음 이를 구문 분석하여 이 목록을 얻습니다. 기본적으로 FedUtil은 신뢰 당사자 구성에 이름과 역할 클레임만 필수 클레임으로 구성합니다. 추가 클레임을 요구하도록 신뢰 당사자 응용 프로그램을 구성하는 방법은 "추가 클레임을 요구하도록 응용 프로그램을 구성하는 방법” 단원을 참조하십시오. 신뢰 당사자 응용 프로그램에 필요하지만 STS에서 제공하지 않는 클레임이 있으면 STS 관리자에게 문의하여 필요한 계약을 수립해야 합니다.

"다음"을 클릭합니다. 요약 페이지가 나타납니다.

104f1b7c-f19e-43bf-a6aa-9eb4d92f3532

테스트 인증서를 선택한 경우에는 응용 프로그램 정보에 “선택한 응용 프로그램 인증서: 해당 인증서가 없는 경우 주체 이름이 'CN=DefaultApplicationCertificate'인 새 인증서가 개인 및 신뢰된 사용자 인증서 저장소에 추가됩니다.”라는 내용이 표시됩니다. 기존 인증서를 선택한 경우에는 해당 인증서에 대한 손도장(Thumbprint)이 표시됩니다.

요약 페이지에는 응용 프로그램 정보 대화 상자에 입력한 정보, 기존 STS를 사용하도록 선택했다는 내용, 응용 프로그램이 요청하는 클레임 및 FedUtil에 의해 응용 프로그램 구성에서 변경되는 내용이 표시됩니다.

요약 페이지에는 Schedule daily metadata updates for this application(이 응용 프로그램의 일일 메타데이터 업데이트 예약 확인란도 있습니다. 이 확인란을 선택하면 매일 밤 자정에 응용 프로그램의 메타데이터를 업데이트하는 작업이 예약됩니다. 자세한 내용은 FedUtil을 사용하여 트러스트 관리를 수행하는 방법을 참조하십시오.

"마침"을 클릭합니다.

신뢰 당사자의 web.config 파일에서 다음 사항이 변경되었습니다.

  • 다음과 같은 응용 프로그램 설정이 추가되었습니다. “Specified STS”는 사용자가 FedUtil에서 지정한 STS를 가리킵니다.

    <appSettings> <add key="FederationMetadataLocation" value="<specified STS>" /> </appSettings>
    
  • 모든 사용자에게 페더레이션 메타데이터에 대한 액세스 권한이 부여되었습니다.

    <location path="FederationMetadata"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location>
    
  • WSFederationAuthenticationModuleSessionAuthenticationModule<system.Web>/<httpModules> 요소에 추가되었습니다.

    <httpModules> ... <add name="WSFederationAuthenticationModule" type="Microsoft.IdentityModel.Web.WSFederationAuthenticationModule, Microsoft.IdentityModel, Version=0.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> <add name="SessionAuthenticationModule" type="Microsoft.IdentityModel.Web.SessionAuthenticationModule, Microsoft.IdentityModel, Version=0.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> </httpModules>
    
  • <system.webServer>/<modules> 요소에도 추가되었습니다.

    <system.webServer> ... <modules> <add name="WSFederationAuthenticationModule" type="Microsoft.IdentityModel.Web.WSFederationAuthenticationModule, Microsoft.IdentityModel, Version=0.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler" /> <add name="SessionAuthenticationModule" type="Microsoft.IdentityModel.Web.SessionAuthenticationModule, Microsoft.IdentityModel, Version=0.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler" /> </modules> ... </system.webServer>
    
  • 마지막으로, <microsoft.identityModel>/<service> 요소가 다음과 같이 변경되었습니다. “Specified STS”는 사용자가 FedUtil에서 지정한 STS를 가리킵니다.

    <microsoft.identityModel> <service> <audienceUris> <add value="https://localhost:57349/ClaimsAwareWebSite2/" /> </audienceUris> <federatedAuthentication> <wsFederation passiveRedirectEnabled="true" issuer="https://<specified STS>/FederationPassive/" realm="https://localhost:57349/ClaimsAwareWebSite2/" requireHttps="false" /> <cookieHandler requireSsl="false" /> </federatedAuthentication> <serviceCertificate> <certificateReference x509FindType="FindByThumbprint" findValue="48BF03FCEDA703DE09E0F1F0CEFED60BB92B3DD8" storeLocation="LocalMachine" storeName="My" /> </serviceCertificate> <applicationService> <claimTypeRequired> <!--Following are the claims offered by STS 'http://<specified STS>/Trust'. Add or uncomment claims that you require by your application and then update the federation metadata of this application.--> <claimType type="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" optional="true" /> <claimType type="https://schemas.microsoft.com/ws/2008/06/identity/claims/role" optional="true" /> <!--<claimType type="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" optional="true" />--> <!--<claimType type="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn" optional="true" />--> <!--<claimType type="https://schemas.xmlsoap.org/claims/CommonName" optional="true" />--> <!--<claimType type="https://schemas.xmlsoap.org/claims/EmailAddress" optional="true" />--> <!--<claimType type="https://schemas.xmlsoap.org/claims/Group" optional="true" />--> <!--<claimType type="https://schemas.xmlsoap.org/claims/UPN" optional="true" />--> <!--<claimType type="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier" optional="true" />--> <!--<claimType type="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/webpage" optional="true" />--> <!--<claimType type="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/title" optional="true" />--> <!--<claimType type="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/picture" optional="true" />--> <!--<claimType type="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/manager" optional="true" />--> <!--<claimType type="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/department" optional="true" />--> </claimTypeRequired> </applicationService> <issuerNameRegistry type="Microsoft.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"> <trustedIssuers> <add thumbprint="5C8885A8E3D29D6BF6C9365E00B1BEA5EB284D1E" name="CN=<specified STS>, OU=US-Federated Identity, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" /> </trustedIssuers> </issuerNameRegistry> </service> </microsoft.identityModel>
    
    • <audienceUris> 요소가 클레임 인식 ASP.NET 신뢰 당사자 응용 프로그램의 URI를 지정하기 위해 추가됩니다.

    • <federatedAuthentication> 요소가 이 클레임 인식 ASP.NET 신뢰 당사자 응용 프로그램의 STS 위치를 지정하기 위해 추가됩니다. 이 STS는 사용자가 FedUtil에서 지정한 STS입니다.

    • <serviceCertificate> 요소가 클레임 인식 ASP.NET 신뢰 당사자 응용 프로그램이 STS와의 통신을 암호화하는 데 사용하는 인증서의 위치를 지정하기 위해 추가됩니다. 이 인증서는 사용자가 FedUtil에서 지정한 인증서입니다.

    • <applicationService>/<claimTypeRequired> 요소가 응용 프로그램에서 STS가 발급한 토큰에 요청하는 클레임을 지정하기 위해 추가됩니다. 기본적으로 FedUtil은 이름과 역할 클레임만 요구하도록 클레임 인식 ASP.NET 신뢰 당사자 응용 프로그램을 구성합니다. 추가 클레임을 요구하도록 신뢰 당사자 응용 프로그램을 구성하는 방법은 "추가 클레임을 요구하도록 응용 프로그램을 구성하는 방법” 단원을 참조하십시오.

    • <issuerNameRegistry>/<trustedIssuers> 요소는 STS가 자신이 발급하는 토큰에 서명하는 데 사용할 인증서를 지정하기 위해 추가됩니다.

로컬 STS에서 프로덕션 STS로 전환하고 다시 반대로 전환하기 위해 FedUtil을 반복적으로 실행할 수 있습니다. FedUtil을 실행할 때마다 이전에 만든 구성을 덮어쓰게 됩니다. 하지만 FedUtil을 사용하여 로컬 또는 프로덕션 STS를 사용하는 상태에서 STS를 사용하지 않는 상태로 전환할 수는 없습니다.

FedUtil을 실행하고 로컬 STS를 만든 다음 프로덕션 STS로 전환하면 구성 파일의 <issuerNameRegistry> 요소에 신뢰할 수 있는 발급자가 두 개 포함됩니다. 하나는 로컬 STS이고 다른 하나는 프로덕션 STS입니다. 응용 프로그램을 배포할 준비가 되면 발급자 이름 레지스트리에서 로컬 STS를 제거해야 합니다.

3. 페더레이션 메타데이터 업데이트

기본적으로 FedUtil을 사용하여 프로덕션 STS를 지정하면 이름과 역할 클레임만 요구하도록 응용 프로그램이 구성됩니다. 응용 프로그램 web.config 파일의 <Microsoft.IdentityModel>/<service>/<applicationService>/<claimTypeRequired> 요소를 보면 이를 확인할 수 있습니다.

<claimTypeRequired> <!--Following are the claims offered by STS '<specified STS>', and added at 4/15/2009 3:57:07 PM. Add or uncomment claims that you require by your application and then update the federation metadata of this application.--> <claimType type="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" optional="true" /> <claimType type="https://schemas.microsoft.com/ws/2008/06/identity/claims/role" optional="true" /> <!--<claimType type="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" optional="true" />--> ... </claimTypeRequired>

예를 들어 앞의 코드 조각에서 emailaddress 클레임이 주석 처리되었습니다. 추가 클레임을 요구하도록 응용 프로그램을 구성하려면 원하는 클레임의 주석 처리를 제거하십시오. 그런 다음 솔루션 탐색기에서 응용 프로그램 프로젝트를 마우스 오른쪽 단추로 클릭하고 "페더레이션 메타데이터 업데이트"를 선택합니다.

14597f95-c206-4df5-bb01-36f677bb8bf5

그러면 필요한 클레임 목록에 대한 변경 내용을 반영하도록 응용 프로그램의 페더레이션 메타데이터가 업데이트됩니다. 그 후에 응용 프로그램의 FederationMetadata.xml 파일을 열어서 필요한 클레임 목록이 업데이트되었는지 확인할 수 있습니다. 여기에는 이제 응용 프로그램의 web.config 파일에서 주석 처리를 제거한 모든 추가 클레임이 포함되어 있어야 합니다. FedUtil에서는 응용 프로그램 web.config 파일의 백업 복사본도 만듭니다.

<fed:ClaimTypesRequested> <auth:ClaimType Uri="https://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" Optional="True" xmlns:auth="http://docs.oasis-open.org/wsfed/authorization/200706" /> <auth:ClaimType Uri="https://schemas.microsoft.com/ws/2008/06/identity/claims/role" Optional="True" xmlns:auth="http://docs.oasis-open.org/wsfed/authorization/200706" /> ... </fed:ClaimTypesRequested>

응용 프로그램의 web.config 파일에 사용자 지정 클레임 유형을 추가할 수도 있습니다. 이런 경우 STS 관리자에게 새 클레임 유형을 발급할 수 있도록 응용 프로그램의 STS 정책을 업데이트해 줄 것을 요청해야 합니다.