Share via


방법: 페더레이션 서비스에서 자격 증명 구성

WCF(Windows Communication Foundation)에서 페더레이션 서비스 만들기는 다음과 같은 기본 프로시저로 구성됩니다.

  1. WSFederationHttpBinding 또는 유사한 사용자 지정 바인딩을 구성합니다. 적절한 바인딩을 만드는 방법에 대한 자세한 내용은 방법: WSFederationHttpBinding 만들기를 참조하세요.

  2. 서비스에 제공되는 발급된 토큰에 대한 인증 방법을 제어하는 IssuedTokenServiceCredential을 구성합니다.

이 항목에서는 두 번째 단계에 대해 자세히 설명합니다. 페더레이션 서비스의 작동 방식에 대한 자세한 내용은 페더레이션을 참조하세요.

IssuedTokenServiceCredential의 속성을 코드로 설정하려면

  1. IssuedTokenAuthentication 클래스의 ServiceCredentials 속성을 사용하여 IssuedTokenServiceCredential 인스턴스에 대한 참조를 반환합니다. Credentials 클래스의 ServiceHostBase 속성에서 이 속성에 액세스합니다.

  2. CardSpace 카드와 같은 자체 발급 토큰을 인증해야 하는 경우 AllowUntrustedRsaIssuers 속성을 true로 설정합니다. 기본값은 false입니다.

  3. KnownCertificates 속성에 의해 반환된 컬렉션을 X509Certificate2 클래스의 인스턴스로 채웁니다. 각 인스턴스는 서비스에서 인증되는 토큰 발급자를 나타냅니다.

    참고 항목

    ScopedCertificates 속성에 의해 반환된 클라이언트 측 컬렉션과는 달리, 알려진 인증서 컬렉션은 키 컬렉션이 아닙니다. 발급된 토큰이 포함된 메시지를 보낸 클라이언트 주소와 상관없이, 서비스에서는 지정된 인증서에서 발급한 토큰을 적용합니다.

  4. CertificateValidationMode 속성을 X509CertificateValidationMode 열거형 값 중 하나로 설정합니다. 이 작업은 코드로만 수행할 수 있습니다. 기본값은 ChainTrust입니다.

  5. CertificateValidationMode 속성이 Custom으로 설정된 경우 사용자 지정 X509CertificateValidator 클래스의 인스턴스를 CustomCertificateValidator 속성에 할당합니다.

  6. CertificateValidationModeChainTrust 또는 PeerOrChainTrust로 설정된 경우에는 RevocationMode 속성을 적절한 X509RevocationMode 열거형 값으로 설정합니다. 해지 모드는PeerTrust 또는 Custom 유효성 검사 모드에서 사용되지 않습니다.

  7. 필요에 따라 사용자 지정 SamlSerializer 클래스의 인스턴스를 SamlSerializer 속성에 할당합니다. 예를 들어 사용자 지정 SAML(Security Assertions Markup Language) 어설션을 구문 분석하기 위해 사용자 지정 SAML serializer가 필요합니다.

IssuedTokenServiceCredential의 속성을 구성에서 설정하려면

  1. <issuedTokenAuthentication> 요소를 <serviceCredentials> 요소의 자식 요소로 만듭니다.

  2. CardSpace 카드와 같은 자체 발급 토큰을 인증하는 경우 <issuedTokenAuthentication> 요소의 allowUntrustedRsaIssuers 특성을 true로 설정합니다.

  3. <knownCertificates> 요소를 <issuedTokenAuthentication> 요소의 자식으로 만듭니다.

  4. <add> 요소를 <knownCertificates> 요소의 자식으로 0개 이상 만들고 storeLocation, storeName, x509FindTypefindValue 특성을 사용하여 인증서를 찾는 방법을 지정합니다.

  5. 필요한 경우 <issuedTokenAuthentication> 요소의 samlSerializer 특성을 사용자 지정 SamlSerializer 클래스의 형식 이름으로 설정합니다.

예시

다음 예제에서는 IssuedTokenServiceCredential의속성을 코드로 설정합니다.

// This method configures the IssuedTokenAuthentication property of a ServiceHost.
public static void ConfigureIssuedTokenServiceCredentials(
    ServiceHost sh, bool allowCardspaceTokens, IList<X509Certificate2> knownissuers,
    X509CertificateValidationMode certMode, X509RevocationMode revocationMode, SamlSerializer ser )
{
  // Allow CardSpace tokens.
  sh.Credentials.IssuedTokenAuthentication.AllowUntrustedRsaIssuers = allowCardspaceTokens;

  // Set up known issuer certificates.
  foreach(X509Certificate2 cert in knownissuers)
    sh.Credentials.IssuedTokenAuthentication.KnownCertificates.Add ( cert );

  // Set issuer certificate validation and revocation checking modes.
  sh.Credentials.IssuedTokenAuthentication.CertificateValidationMode =
      X509CertificateValidationMode.PeerOrChainTrust;
  sh.Credentials.IssuedTokenAuthentication.RevocationMode = X509RevocationMode.Online;
  sh.Credentials.IssuedTokenAuthentication.TrustedStoreLocation = StoreLocation.LocalMachine;

  // Set the SamlSerializer, if one is specified.
  if ( ser != null )
    sh.Credentials.IssuedTokenAuthentication.SamlSerializer = ser;
}
' This method configures the IssuedTokenAuthentication property of a ServiceHost.
Public Shared Sub ConfigureIssuedTokenServiceCredentials( _
    ByVal sh As ServiceHost, _
    ByVal allowCardspaceTokens As Boolean, _
    ByVal knownissuers As IList(Of X509Certificate2), _
    ByVal certMode As X509CertificateValidationMode, _
    ByVal revocationMode As X509RevocationMode, _
    ByVal ser As SamlSerializer _
    )
    ' Allow CardSpace tokens.
    sh.Credentials.IssuedTokenAuthentication.AllowUntrustedRsaIssuers = _
    allowCardspaceTokens

    ' Set up known issuer certificates.
    Dim cert As X509Certificate2
    For Each cert In knownissuers
        sh.Credentials.IssuedTokenAuthentication.KnownCertificates.Add(cert)
    Next cert
    ' Set issuer certificate validation and revocation checking modes.
    sh.Credentials.IssuedTokenAuthentication.CertificateValidationMode = _
        X509CertificateValidationMode.PeerOrChainTrust
    sh.Credentials.IssuedTokenAuthentication.RevocationMode = _
    X509RevocationMode.Online

    ' Set the SamlSerializer, if one is specified.
    If Not (ser Is Nothing) Then
        sh.Credentials.IssuedTokenAuthentication.SamlSerializer = ser
    End If
End Sub

페더레이션 서비스에서 클라이언트를 인증하려면 발급된 토큰이 다음 조건을 만족해야 합니다.

  • 발급된 토큰의 디지털 서명에 RSA 보안 키 식별자를 사용하는 경우, AllowUntrustedRsaIssuers 속성은 true여야 합니다.

  • 발급된 토큰의 서명에 X.509 발급자 일련 번호, X.509 주체 키 식별자 또는 X.509 지문 보안 식별자를 사용하는 경우, 발급된 토큰은 KnownCertificates 클래스의 IssuedTokenServiceCredential 속성에 의해 반환된 컬렉션의 인증서를 통해 서명해야 합니다.

  • 발급된 토큰을 X.509 인증서를 통해 서명하는 경우에는 해당 인증서가 신뢰하는 상대에게 CertificateValidationMode로 보내졌는지 또는 X509RawDataKeyIdentifierClause 속성에서 가져온 것인지에 상관없이, 인증서에서는 KnownCertificates 속성 값으로 지정된 의미 체계별로 유효성을 검사해야 합니다. X.509 인증서 유효성 검사에 대한 자세한 내용은 인증서 작업을 참조하세요.

예를 들어 CertificateValidationModePeerTrust로 설정하면 서명 인증서가 TrustedPeople 인증서 저장소에 있는 발급된 모든 토큰을 인증하게 됩니다. 이 경우 TrustedStoreLocation 속성을 CurrentUser 또는 LocalMachine으로 설정합니다. Custom 등의 다른 모드를 선택할 수도 있습니다. Custom을 선택하면 X509CertificateValidator 클래스의 인스턴스를 CustomCertificateValidator 속성에 할당해야 합니다. 사용자 지정 유효성 검사기에서 원하는 조건을 사용하여 인증서의 유효성을 검사할 수 있습니다. 자세한 내용은 방법: 사용자 지정 인증서 유효성 검사기를 사용 하는 서비스 만들기를 참조하세요.

참고 항목