Oracle OpenSSO 업데이트 2 릴리스 노트

4장 Oracle OpenSSO Fedlet 사용

이 섹션에서는 Oracle OpenSSO Fedlet에 대한 다음 정보를 제공합니다.

Oracle OpenSSO Fedlet 정보

Oracle OpenSSO Fedlet는 Java 또는 .NET 서비스 공급자 응용 프로그램과 함께 배포될 수 있는 경량의 SP(서비스 공급자) 구현으로서, 응용 프로그램이 SAMLv2 프로토콜을 사용하여 Oracle OpenSSO 8.0 업데이트 2 등의 IDP(아이디 공급자)와 통신할 수 있도록 합니다. Fedlet에는 두 가지 버전이 있으며 플랫폼에 따라 달라집니다.

Oracle OpenSSO 8.0 업데이트 2에서 Fedlet을 다음과 같이 사용할 수 있습니다.

Oracle OpenSSO Fedlet 요구 사항

Fedlet에는 다음과 같은 요구 사항이 있습니다.

Oracle OpenSSO Fedlet 구성

이 섹션에서는 서비스 공급자 응용 프로그램을 사용하여 Fedlet을 처음 구성하는 방법을 설명합니다.

Fedlet에 대한 초기 구성을 마친 후 수행하려는 추가 구성을 계속합니다. 다음과 같은 사항을 고려해야 합니다.

ProcedureJava Fedlet을 구성하는 방법

  1. 아이디 공급자측에서 아이디 공급자에 대한 XML 메타데이터를 생성하고 idp.xml이라는 파일에 메타데이터를 저장합니다.

    Oracle OpenSSO 8.0 업데이트 2의 경우, exportmetadata.jsp를 사용합니다. 예:

    http://opensso-idp.example.com:8080/opensso/saml2/jsp/exportmetadata.jsp
  2. 서비스 공급자측에서 Fedlet ZIP 파일을 압축 해제합니다(필요한 경우).

  3. Fedlet 홈 디렉토리를 만듭니다. 이것은 Fedlet이 메타데이터, 트러스트 그룹 및 구성 등록 정보 파일을 읽는 디렉토리입니다.

    기본 위치는 Fedlet 웹 컨테이너를 실행하는 사용자의 홈 디렉토리 아래 있는 fedlet 하위 디렉토리입니다(user.home JVM 등록 정보에 표시됨). 예를 들어 이 홈 디렉토리가 /home/webservd인 경우 Fedlet 홈 디렉토리는 다음과 같습니다.

    /home/webservd/fedlet

    Fedlet 기본 홈 디렉토리를 변경하려면 JVM 런타임 com.sun.identity.fedlet.home 등록 정보의 값을 원하는 위치로 설정합니다. 예:

    -Dcom.sun.identity.fedlet.home=/export/fedlet/conf

    그런 다음 Fedlet이 /export/fedlet/conf 디렉토리에서 메타데이터, 트러스트 그룹 및 구성 파일을 읽습니다.

  4. Java Fedlet java/conf 디렉토리에서 Fedlet 홈 디렉토리로 다음 파일을 복사합니다.

    • sp.xml-template

    • sp-extended.xml-template

    • idp-extended.xml-template

    • fedlet.cot-template

  5. Fedlet 홈 디렉토리에서 복사한 파일의 이름을 바꾸고 각 이름에서 -template을 삭제합니다.

  6. Fedlet 홈 디렉토리에서 복사하고 이름을 바꾼 파일에서 다음 표에 표시된 대로 태그를 바꿉니다.

    태그 

    바꾸기 

    FEDLET_COT

    원격 아이디 공급자 및 Java Fedlet 서비스 공급자 응용 프로그램이 구성원으로 포함된 COT(트러스트 그룹)의 이름입니다. 

    FEDLET_ENTITY_ID

    Java Fedlet 서비스 공급자 응용 프로그램의 ID(이름)입니다. 예: fedletsp

    FEDLET_PROTOCOL

    Java Fedlet 서비스 공급자 응용 프로그램에 대한 웹 컨테이너(예: fedlet.war)의 프로토콜입니다. 예: https

    FEDLET_HOST

    Java Fedlet 서비스 공급자 응용 프로그램에 대한 웹 컨테이너(예: fedlet.war)의 호스트 이름입니다. 예: fedlet-host.example.com

    FEDLET_PORT

    Java Fedlet 서비스 공급자 응용 프로그램에 대한 웹 컨테이너(예: fedlet.war)의 포트 번호입니다. 예: 80

    FEDLET_DEPLOY_URI

    Java Fedlet 서비스 공급자 응용 프로그램의 URL입니다. 예: http://fedletsp.example.com/myFedletApp

    IDP_ENTITY_ID

    원격 아이디 공급자의 ID(이름)입니다. 예: openssoidp

    참고: Fedlet 서비스 공급자 또는 아이디 공급자 엔티티 ID에 퍼센트 기호(%) 또는 쉼표(,)가 포함된 경우 fedlet.cot 파일에서 이름을 바꾸기 전에 문자를 제외해야 합니다. 예를 들어 "%"를 "%25"로, ","를 "%2C"로 변경합니다.

  7. Java Fedlet java/conf 디렉토리에서 Fedlet home 디렉토리로 FedletConfiguration.properties 파일을 복사합니다.

  8. 1단계의 아이디 공급자 표준 메타데이터 XML 파일을 Fedlet 홈 디렉토리로 복사합니다. 이 파일의 이름은 idp.xml로 지정되어야 합니다.

  9. Java Fedlet XML 메타데이터 파일(sp.xml)을 아이디 공급자로 가져옵니다.

    Oracle OpenSSO 8.0 업데이트 2의 경우, OpenSSO 8.0 관리 콘솔에서 일반 작업 아래의 원격 서비스 공급자 등록 작업 흐름을 사용하여 Java Fedlet 서비스 공급자 메타데이터를 가져오고 Java Fedlet 서비스 공급자를 트러스트 그룹에 추가합니다.

다음 순서

요구 사항에 따라 Java Fedlet에 대한 추가 구성을 계속합니다.

Procedure.NET Fedlet을 구성하는 방법

  1. 아이디 공급자측에서 아이디 공급자에 대한 XML 메타데이터를 생성하고 idp.xml이라는 파일에 메타데이터를 저장합니다.

    Oracle OpenSSO 8.0 업데이트 2의 경우, exportmetadata.jsp를 사용합니다. 예:

    http://opensso-idp.example.com:8080/opensso/saml2/jsp/exportmetadata.jsp
  2. 서비스 공급자측에서 Fedlet ZIP 파일을 압축 해제합니다(필요한 경우).

  3. .NET Fedlet asp.net/conf 폴더에서 응용 프로그램의 App_Data 폴더로 다음 파일을 복사합니다.

    • sp.xml-template

    • sp-extended.xml-template

    • idp-extended.xml-template

    • fedlet.cot-template

  4. App_Data 폴더에서 복사한 파일의 이름을 바꾸고 각 이름에서 -template을 삭제합니다.

  5. App_Data 폴더에서 복사하고 이름을 바꾼 파일에서 다음 표에 표시된 대로 태그를 바꿉니다.

    태그 

    바꾸기 

    FEDLET_COT

    원격 아이디 공급자 및 .NET Fedlet 서비스 공급자 응용 프로그램이 구성원으로 포함된 COT(트러스트 그룹)의 이름입니다. 

    FEDLET_ENTITY_ID

    .NET Fedlet 서비스 공급자 응용 프로그램의 ID(이름)입니다. 예: fedletsp

    FEDLET_DEPLOY_URI

    .NET Fedlet 서비스 공급자 응용 프로그램의 URL입니다. 예: http://fedletsp.example.com/myFedletApp

    IDP_ENTITY_ID

    원격 아이디 공급자의 ID(이름)입니다. 예: openssoidp

  6. 1단계의 아이디 공급자 표준 메타데이터 XML 파일을 응용 프로그램의 App_Data 폴더로 복사합니다. 이 파일의 이름은 idp.xml로 지정되어야 합니다.

  7. Fedlet.dllFedlet.dll.config 파일을 .NET Fedlet asp.net/bin 폴더에서 응용 프로그램의 bin 폴더로 복사합니다.

  8. .NET Fedlet XML 메타데이터 파일(sp.xml)을 아이디 공급자로 가져옵니다.

    Oracle OpenSSO 8.0 업데이트 2의 경우, OpenSSO 8.0 관리 콘솔에서 일반 작업 아래의 원격 서비스 공급자 등록 작업 흐름을 사용하여 .NET Fedlet 서비스 공급자 메타데이터를 가져오고 .NET Fedlet 서비스 공급자를 트러스트 그룹에 추가합니다.

다음 순서

요구 사항에 따라 .NET Fedlet에 대한 추가 구성을 계속합니다.

OpenSSO 8.0 업데이트 2에서 제공되는 Fedlet의 새로운 기능

Oracle OpenSSO 8.0 업데이트 2에는 다음과 같은 Fedlet의 새로운 기능이 포함되어 있습니다.

Fedlet 버전 정보(CR 6941387)

Oracle OpenSSO Fedlet에는 버전 정보가 포함되어 있습니다. Fedlet 패키지(ZIP 파일)의 파일을 추출한 후 다음 파일 중 하나를 확인하여 Fedlet 버전을 판별합니다.

Java Fedlet 비밀번호 암호화 및 해독(CR 6930477)

Java Fedlet은 fedlet.war 파일에 fedletEncode.jsp를 제공하여 storepass keypass 비밀번호를 암호화합니다. 기본적으로 각 Fedlet에 대해 서로 다른 암호화 키가 생성됩니다. 이 암호화 키를 변경하려면 Fedlet FederationConfig.properties 파일에서 am.encryption.pwd 등록 정보를 설정합니다.

서명 및 암호화에 대한 Java Fedlet 지원

Java Fedlet은 암호화된 assertionNameID 요소의 XML 서명 확인 및 해독과 해당 속성을 지원합니다.

Procedure서명 및 암호화를 위해 Java Fedlet을 구성하는 방법

  1. keytool 유틸리티를 사용하여 keystore.jks라는 키 저장소 파일을 만듭니다.

  2. 서명에 사용되는 개인 키(및 해당되는 경우 공용 인증서)와 암호화에 사용되는 개인 키(및 해당되는 경우 공용 인증서)를 keystore.jks 파일에 추가합니다.

  3. .storepass 파일을 만듭니다.

  4. .storepass 파일에 비밀번호를 추가합니다. 비밀번호를 암호화하려면 fedletEncode.jsp를 사용합니다.

  5. .keypass 파일을 만듭니다.

  6. .keypass 파일에 비밀번호를 추가합니다. 비밀번호를 암호화하려면 fedletEncode.jsp를 사용합니다.

  7. 일반 텍스트 비밀번호를 사용하는 경우 FederationConfig.properties 파일에 다음 줄을 주석으로 추가합니다.

    com.sun.identity.saml.xmlsig.passwordDecoder=
        com.sun.identity.fedlet.FedletEncodeDecode
  8. FederationConfig.properties 파일에서 다음 속성의 전체 경로를 설정합니다. path는 각 파일에 대한 전체 경로입니다.

    com.sun.identity.saml.xmlsig.keystore=path/keystore.jks
    com.sun.identity.saml.xmlsig.storepass=path/.storepass
    com.sun.identity.saml.xmlsig.keypass=path/.keypass
  9. keytool을 사용하여 서명 인증서를 내보냅니다. 예:

    keytool -export -keystore keystore.jks -rfc -alias test

    도구에 keystore.jks에 액세스하는 데 사용되는 비밀번호를 입력하라는 메시지가 표시되고 인증서가 생성됩니다.

  10. 암호화 인증서가 필요한 경우 이전 단계에 표시된 대로 keytool을 사용하여 인증서를 내보냅니다. 또는 서명과 암호화 모두에 동일한 인증서를 사용합니다.

  11. KeyDescriptor XML 블록을 만들고 암호화 인증서를 블록에 추가합니다. 예를 들어 KeyDescriptor 요소의 use="signing" 태그를 보십시오.

    <KeyDescriptor use="signing">
          <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
            <ds:X509Data>
              <ds:X509Certificate>
    MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh
    bGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w
    ZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw
    CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK
    BgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B
    AQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of\+
    RkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY
    Js0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U
    QzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA
    cGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC
    /FfwWigmrW0Y0Q==
              </ds:X509Certificate>
            </ds:X509Data>
          </ds:KeyInfo>
    </KeyDescriptor>
  12. 다른 KeyDescriptor XML 블록을 만들고 암호화 인증서를 이 블록에 추가합니다. 예를 들어 KeyDescriptor 요소의 use="encryption" 태그를 보십시오.

    <KeyDescriptor use="encryption">
          <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            <X509Data>
              <X509Certificate>
    MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh
    bGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w
    ZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw
    CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK
    BgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B
    AQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of\+
    RkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY
    Js0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U
    QzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA
    cGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC
    /FfwWigmrW0Y0Q==
              </X509Certificate>
            </X509Data>
          </KeyInfo>
    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc">
      <KeySize xmlns="http://www.w3.org/2001/04/xmlenc#">128</KeySize>
    </EncryptionMethod>
    </KeyDescriptor>
  13. Java Fedlet sp.xml 파일에서 서명 및 암호와 인증서가 포함된 XML 블록을 SPSSODescriptor 요소 아래에 추가합니다. SPSSODescriptor 요소 샘플은 예 4–1을 참조하십시오.

    AuthnRequestsSigned 속성이 true로 설정되어 모든 인증 요청을 서명하도록 Java Fedlet을 구성합니다.

  14. Java Fedlet sp-extended.xml 파일에서 다음 요소에 대한 값을 설정합니다.

    • signingCertAlias는 키 저장소에 있는 XML 서명 인증서의 별칭을 포함합니다.

    • encryptionCertAlias는 키 저장소에 있는 XML 암호화 인증서의 별칭을 포함합니다.

  15. Java Fedlet 서비스 공급자가 암호화하는 항목을 적용하려면 sp-extended.xml 파일에서 다음 속성을 true로 설정합니다.

    • wantAssertionEncrypted

    • wantNameIDEncrypted

    • wantAttributeEncrypted

  16. Java Fedlet 서비스 공급자가 서명하고 서명되기를 원하는 항목을 적용하려면 다음 속성을 true로 설정합니다.

    • idp.xml 파일의 wantAuthnRequestsSigned는 Fedlet에 서명할 항목을 알려줍니다.

    • sp.xml 파일의 AuthnRequestsSignedWantAssertionsSigned는 아이디 공급자에게 Fedlet이 서명하게 될 항목을 알려줍니다.

    • sp-extended.xml 파일의 wantArtifactResponseSigned는 Fedlet에 서명할 항목을 알려줍니다.

    • sp-extended.xml 파일의 wantPOSTResponseSigned

    • sp-extended.xml 파일의 wantLogoutRequestSigned

    • sp-extended.xml 파일의 wantLogoutResponseSigned

    아이디 공급자가 특정 메시지에 대한 서명을 요구하는 경우 idp-extended.xml 파일에서 각 속성을 true로 설정합니다. wantLogoutRequestSigned wantLogoutResponseSigned가 그 예에 해당합니다.


    주 –

    sp-extended.xml 파일에서 속성을 설정하는 경우 이 정보를 아이디 공급자 관리자에게 전달하여 필요에 따라 아이디 공급자의 구성을 변경할 수 있습니다.


  17. Java Fedlet 웹 컨테이너를 다시 시작합니다.

  18. Java Fedlet sp.xml 파일을 아이디 공급자로 가져옵니다.


예 4–1 Java Fedlet 샘플 SPSSODescriptor 요소

<EntityDescriptor entityID="fedlet"
xmlns="urn:oasis:names:tc:SAML:2.0:metadata">

<SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="false"
protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<b><KeyDescriptor use="signing">
      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:X509Data>
          <ds:X509Certificate>
MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh
bGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w
ZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK
BgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B
AQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of\+
RkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY
Js0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U
QzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA
cGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC
/FfwWigmrW0Y0Q==
          </ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>

</KeyDescriptor></b>
<b><KeyDescriptor use="encryption">
      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
        <X509Data>
          <X509Certificate>
MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh
bGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w
ZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK
BgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B
AQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of\+
RkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY
Js0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U
QzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA
cGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC
/FfwWigmrW0Y0Q==
          </X509Certificate>
        </X509Data>
      </KeyInfo>

<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc">
<KeySize xmlns="http://www.w3.org/2001/04/xmlenc#">128</KeySize>
</EncryptionMethod>
</KeyDescriptor></b>
<NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</NameIDFormat
><AssertionConsumerService index="1"
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="http://server.sun.com:7070/fedlet/fedletapplication"/>
</SPSSODescriptor>
</EntityDescriptor>

속성 쿼리에 대한 Java Fedlet 지원(CR 6930476)

Java Fedlet은 SAMLv2 속성 쿼리를 지원하여 Oracle OpenSSO 8.0 업데이트 2와 같은 아이디 공급자에게 특정 아이디 속성 값을 쿼리합니다. Fedlet이 쿼리를 서명하고 암호화하도록 구성할 수 있습니다. 서명은 Fedlet 쿼리를 실행하는 데 반드시 필요하지만 암호화는 선택 사항입니다.

Procedure속성 쿼리를 위해 Java Fedlet을 구성하는 방법

  1. XML 서명을 사용하여 서명 및 암호화에 대한 Java Fedlet 지원에 설명된 대로 속성 쿼리를 서명합니다.

  2. 이전 단계에서 생성된 인증서를 Fedlet sp.xml 파일의 RoleDescriptor 요소에 추가합니다. 다음 예에는 인증서를 붙여넣는 두 개의 KeyDescriptor 태그가 있습니다. 하나는 서명에 사용되고 다른 하나는 암호화에 사용됩니다. 암호화를 사용하지 않는 경우 KeyDescriptor use="encryption" tag는 필요 없습니다.

    <RoleDescriptor xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:query="urn:oasis:names:tc:SAML:metadata:ext:query"
          xsi:type="query:AttributeQueryDescriptorType"
          protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
      <KeyDescriptor use="signing">
          <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
            <ds:X509Data>
              <ds:X509Certificate>
                --certificate--
              </ds:X509Certificate>
            </ds:X509Data>
          </ds:KeyInfo>
      </KeyDescriptor>
      <KeyDescriptor use="encryption">
          <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
            <ds:X509Data>
              <ds:X509Certificate>
                --certificate--
              </ds:X509Certificate>
            </ds:X509Data>
          </ds:KeyInfo>
        <EncryptionMethod
    Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc">
    <xenc:KeySize
    xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">128</xenc:KeySize>
        </EncryptionMethod>
      </KeyDescriptor>
    </RoleDescriptor>
  3. Java Fedlet sp-extended.xml 파일에서 signingCertAlias 속성에 대한 값을 지정하고, 구성된 경우 encryptionCertAlias 속성에 대한 값도 지정합니다.

    아이디 공급자가 명제를 암호화하도록 구성하려면 NameID 요소도 암호화합니다. 그러므로 wantNameIDEncrypted 속성의 값을 true로 설정해야 합니다. XML 코드를 AttributeQueryConfig 요소에 추가합니다. 예:

    <Attribute name="signingCertAlias">
          <Value>test</Value>
    </Attribute>
    <Attribute name="encryptionCertAlias">
          <Value>test</Value>
    </Attribute>
    <Attribute name="wantNameIDEncrypted">
          <Value>true</Value>
    </Attribute>

    이 예에서 test는 샘플 키의 별칭입니다.

  4. Java Fedlet 메타데이터 파일(sp.xml)을 아이디 공급자로 가져옵니다.

    또한 Fedlet에 대한 속성 쿼리를 지원하도록 아이디 공급자에서 추가 구성 단계를 수행합니다.

요청 및 응답의 .NET Fedlet 암호화 및 해독(CR 6939005)

.NET Fedlet은 NameID, Attribute 및 Assertion 요소에 대해 발신 XML 요청을 암호화하고 수신 응답을 해독할 수 있습니다.

Procedure요청 및 응답의 암호화 및 해독을 위해 .NET Fedlet을 구성하는 방법

  1. Microsoft 관리 콘솔에 대한 인증서 스냅인을 사용하여 X.509 인증서를 로컬 컴퓨터 계정 내의 개인 폴더로 가져옵니다. 이 스냅인을 사용하려면 다음 Microsoft 문서를 참조하십시오.

    http://msdn.microsoft.com/ko-kr/library/ms788967.aspx

  2. 등록 정보 대화 상자를 보고 값을 입력하여 이 인증서의 표시 이름을 지정합니다. 4단계를 수행하기 위해 이 값을 저장합니다.

  3. Microsoft 문서에 설명된 대로 IIS(Internet Information Server)에서 사용하는 사용자 계정에 대해 인증서에 읽기 액세스 권한을 허용하도록 적절한 권한을 설정합니다. 예:

    1. 인증서 스냅인에서 작업, 모든 작업 및 개인 키 관리로 차례로 이동합니다.

    2. IIS(일반적으로 네트워크 서비스)를 실행하는 사용자 계정에 대해 읽기 허용 권한을 지정합니다.

  4. .NET Fedlet의 확장 메타데이터 파일(sp-extended.xml )에서 encryptionCertAlias 속성 값으로 2단계에서 지정한 표시 이름을 지정합니다. 예:

    <Attribute name="encryptionCertAlias">
    <Value>MyFedlet</Value>
  5. .NET Fedlet의 서비스 공급자 메타데이터 파일(sp.xml )에서 암호화 키에 대한 KeyDescriptor를 추가합니다.

    이전에 사용된 Microsoft 관리 콘솔에 대한 인증서 스냅인을 사용하여 KeyDescriptor XML 블록에 포함되도록 인증서의 공개 키를 Base64 인코딩으로 내보냅니다. 이 KeyDescriptor SPSSODescriptor 내의 첫 번째 자식 요소여야 합니다. 예:

    <KeyDescriptor use="encryption">
               <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
                 <ds:X509Data>
                   <ds:X509Certificate>
    MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh
    bGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w
    ZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw
    CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK
    BgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B
    AQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of\+
    RkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY
    Js0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U
    QzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA
    cGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC
    /FfwWigmrW0Y0Q==
                   </ds:X509Certificate>
                 </ds:X509Data>
               </ds:KeyInfo>
               <EncryptionMethod
    Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc">
               <KeySize
    xmlns="http://www.w3.org/2001/04/xmlenc#">128</KeySize>
               </EncryptionMethod>
    </KeyDescriptor>
  6. .NET 응용 프로그램과 연결된 응용 프로그램 풀을 다시 시작합니다.

다음 순서

이 구성을 테스트하려면 샘플 응용 프로그램을 사용합니다. 또한 구성된 메타데이터를 적절하게 변경하여 아이디 공급자의 요청을 암호화하고 응답을 해독하도록 다음 속성을 설정합니다.

요청 및 응답의 .NET Fedlet 서명(CR 6928530)

.NET Fedlet은 Authn 요청 및 로그아웃 요청과 같은 발신 XML 요청의 서명을 지원합니다.

Procedure요청 및 응답의 서명을 위해 .NET Fedlet을 구성하는 방법

  1. Microsoft 관리 콘솔에 대한 인증서 스냅인을 사용하여 X.509 인증서를 로컬 컴퓨터 계정 내의 개인 폴더로 가져옵니다. 이 스냅인을 사용하려면 다음 Microsoft 문서를 참조하십시오.

    http://msdn.microsoft.com/ko-kr/library/ms788967.aspx

  2. 등록 정보 대화 상자를 보고 값을 입력하여 이 인증서의 표시 이름을 지정합니다. 4단계를 수행하기 위해 이 값을 저장합니다.

  3. Microsoft 문서에 설명된 대로 IIS(Internet Information Server)에서 사용하는 사용자 계정에 대해 인증서에 읽기 액세스 권한을 허용하도록 적절한 권한을 설정합니다. 예:

    1. 인증서 스냅인에서 작업, 모든 작업 및 개인 키 관리로 차례로 이동합니다.

    2. IIS(일반적으로 네트워크 서비스)를 실행하는 사용자 계정에 대해 읽기 허용 권한을 지정합니다.

  4. .NET Fedlet의 확장 메타데이터 파일(sp-extended.xml )에서 signingCertAlias 속성 값으로 2단계에서 지정한 표시 이름을 지정합니다. 예:

    <Attribute name="signingCertAlias">
    <Value>MyFedlet</Value>
  5. .NET Fedlet의 서비스 공급자 메타데이터 파일(sp.xml )에서 서명 키에 대한 KeyDescriptor를 추가합니다.

    이전에 사용된 Microsoft 관리 콘솔에 대한 인증서 스냅인을 사용하여 KeyDescriptor XML 블록에 포함되도록 인증서의 공개 키를 Base64 인코딩으로 내보냅니다. 이 KeyDescriptorSPSSODescriptor 내의 첫 번째 자식 요소여야 합니다. 예:

    <KeyDescriptor use="signing">
                 <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
                    <ds:X509Data>
                       <ds:X509Certificate>
    MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh
    bGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w
    ZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw
    CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK
    BgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B
    AQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of\+
    RkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY
    Js0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U
    QzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA
    cGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC
    /FfwWigmrW0Y0Q==
                       </ds:X509Certificate>
                    </ds:X509Data>
                 </ds:KeyInfo>
    </KeyDescriptor>
  6. .NET 응용 프로그램과 연결된 응용 프로그램 풀을 다시 시작합니다.

.NET Fedlet 단일 로그아웃(CR 6928528 및 CR 6930472)

.NET Fedlet은 아이디 공급자 시작 및 서비스 공급자 시작 단일 로그아웃을 모두 지원합니다. 단일 로그아웃을 구현하기 위해 .NET Fedlet 샘플 응용 프로그램은 asp.net/SampleApp 폴더에 logout.aspxspinitiatedslo.aspx 파일을 포함하고 있습니다. Fedlet 단일 로그아웃 기능의 작동 방식을 보려면 .NET Fedlet 샘플 응용 프로그램을 배포하십시오.

Procedure단일 로그아웃을 위해 .NET Fedlet 서비스 공급자 응용 프로그램을 구성하는 방법

  1. .NET Fedlet을 구성하지 않은 경우 Readme 파일의 단계를 따릅니다.

  2. .NET 응용 프로그램 공개 내용 내의 logout.aspxspinitiatedslo.aspx 파일을 복사합니다.

  3. 응용 프로그램에 대한 구성 파일을 변경합니다.

    • sp.xml 파일에서 logout.aspx 파일의 경로가 응용 프로그램에 대한 파일의 올바른 위치를 가리키도록 합니다.

    • idp.xml 파일에서(또는 아이디 공급자를 구성하는 동안) spinitiatedslo.aspx 파일의 경로가 응용 프로그램에 대한 파일의 올바른 위치를 가리키도록 합니다.

  4. 로그아웃 요청 및 로그아웃 응답이 서명되도록 하려는 경우 sp-extended.xmlidp-extended.xml 파일에서 다음 속성을 true로 설정합니다.

    • wantLogoutRequestSigned

    • wantLogoutResponseSigned

  5. Fedlet 서비스 공급자 메타데이터 파일(sp.xml)을 아이디 공급자로 가져옵니다.

    또한 아이디 공급자 관리자에게 Fedlet 서비스 공급자에 대해 단일 로그아웃을 구성하여 아이디 공급자 구성에 필요한 추가 변경이 수행되도록 할 수 있다는 것을 알립니다.

.NET Fedlet 서비스 공급자의 단일 사인 온(SSO) 시작(CR 6928525)

.NET Fedlet은 SAMLv2 서비스 공급자에서 시작하는 단일 사인 온(SSO)을 지원합니다. 또한 .NET Fedlet이 아티팩트를 수신한 후 실행 중인 아이디 공급자의 아티팩트 해결 서비스를 사용하여 SOAP를 통해 이를 해결할 수 있도록 하려면 아티팩트 지원이 필요합니다.

.NET Fedlet 샘플 응용 프로그램은 단일 사인 온(SSO)을 구성할 수 있는 방법을 보여줍니다. 응용 프로그램에 필요한 아티팩트가 설치된 다음, 아이디 공급자가 인증을 성공적으로 수행한 후 SAMLv2 응답이 포함된 HTTP POST를 수신하려면 특정 URI가 필요합니다. 다음 코드 예는 .NET 응용 프로그램에서 이 정보를 검색할 수 있는 방법을 보여줍니다.


예 4–2 .NET Fedlet 응용 프로그램에서 AuthnResponse를 검색하는 코드 예

AuthnResponse authnResponse = null;
try
{
      ServiceProviderUtility spu = new ServiceProviderUtility(Context);
      authnResponse = spu.GetAuthnResponse(Context);
}
catch (Saml2Exception se)
{
      // invalid AuthnResponse received
}
catch (ServiceProviderUtilityException spue)
{
      // issues with deployment (reading metadata)
}

응용 프로그램이 SAMLv2 응답을 수신하는 경우 authnResponse 객체에는 명제 정보가 입력됩니다. 샘플 응용 프로그램은 이 객체에서 속성 및 주제 정보를 검색하는 방법을 보여줍니다.

여러 아이디 공급자 및 검색 서비스에 대한 .NET Fedlet 지원(CR 6928524)

.NET Fedlet은 여러 아이디 공급자 및 아이디 공급자 검색 서비스를 지원합니다.

일부 배포에서는 Oracle OpenSSO 8.0 업데이트 2와 같은 여러 아이디 공급자로 .NET Fedlet을 구성해야 하는 경우가 있습니다. 추가할 각 아이디 공급자에 대해 다음 작업을 수행합니다.

Procedure여러 아이디 공급자에 대해 .NET Fedlet을 구성하는 방법

  1. 추가 아이디 공급자에서 XML 메타데이터 파일을 가져옵니다.

  2. 추가 아이디 공급자 메타데이터 파일의 이름을 idp n.xml로 지정합니다. n은 추가하는 아이디 공급자입니다. 예를 들어 두 번째 아이디 공급자 파일을 idp2.xml로, 세 번째를 idp3.xml로 지정합니다. 이 절차에서는 idp2.xml을 파일 이름으로 사용합니다.

  3. 2단계의 idp2.xml 파일을 응용 프로그램의 App_Data 폴더로 복사합니다.

  4. 새 아이디 공급자를 .NET Fedlet 트러스트 그룹에 추가합니다.

    새 아이디 공급자를 기존 트러스트 그룹에 추가하는 방법

    응용 프로그램의 App_Data 폴더에 있는 fedlet.cot 파일에서 쉼표(,)를 구분 기호로 사용하여 새 IDP 엔티티 ID(idp2.xml 메타데이터 파일의 entityID 속성에 표시됨)를 sun-fm-trusted-providers 속성의 값에 추가합니다.

    새 아이디 공급자를 새 트러스트 그룹에 추가하는 방법

    1. 응용 프로그램의 App_Data 폴더에 fedlet2.cot라는 새 파일을 만듭니다. 기존 fedlet.cot 를 서식 파일로 사용하지만 cot-name 속성의 값을 새 트러스트 그룹의 이름(예: cot2)으로 변경합니다. 새 아이디 공급자 엔티티 ID와 Fedlet 엔티티 ID를 모두 sun-fm-trusted-providers 속성의 값으로 포함합니다(두 엔티티 ID를 쉼표(,)로 구분).

    2. sp-extended.xml 파일에서 새 트러스트 그룹 이름을 cotlist 속성의 값에 추가합니다. 예를 들어 cot2라는 트러스트 그룹의 경우 다음을 수행합니다.

      <Attribute name="cotlist">
      <Value>saml2cot</Value>
      <Value>cot2</Value>
      </Attribute>
  5. 응용 프로그램의 App_Data 폴더에서 새 아이디 공급자에 대한 확장 메타데이터로 새 idp2-extended.xml 파일을 만듭니다. 기존 idp-extended.xml 파일을 서식 파일로 사용하지만 entityID를 새 아이디 공급자 엔티티 ID로 변경합니다. 아이디 공급자에 대한 새 트러스트 그룹이 만들어진 경우 cotlist 속성의 값을 트러스트 그룹 이름으로 변경합니다. 추가 아이디 공급자는 원격 아이디여야 합니다.

  6. Fedlet .NET 응용 프로그램과 연결된 응용 프로그램 풀을 다시 시작합니다.

  7. Fedlet 메타데이터 XML 파일(sp.xml)을 추가 아이디 공급자로 가져오고 아이디 공급자 엔티티와 동일한 트러스트 그룹에 추가해야 합니다. sp.xml 파일을 아이디 공급자로 가져오거나 아이디 공급자 관리자에게 가져올 파일을 제공합니다.

아이디 공급자 검색 서비스에 대한 .NET Fedlet 지원(CR 6928524)

이 시나리오에서 .NET Fedlet은 트러스트 그룹의 여러 아이디 공급자로 구성되어 있으며 아이디 공급자 검색 서비스를 사용하여 원하는 아이디 공급자를 확인하도록 Fedlet을 구성하려고 합니다.

.NET Fedlet에서 사용 중인 아이디 공급자에 대해 검색 서비스가 구성되어야 합니다. Oracle OpenSSO 8.0 업데이트 2에서의 아이디 공급자 검색 서비스 구성에 대한 자세한 내용은 http://docs.sun.com/coll/1767.1의 문서 모음을 참조하십시오.

Procedure아이디 공급자 검색 서비스를 사용하도록 .NET Fedlet을 구성하는 방법

  1. .NET Fedlet fedlet.cot 파일에서 sun-fm-saml2-readerservice-url 속성을 SAMLv2 판독기 서비스 URL로 설정합니다. 예:

    sun-fm-saml2-readerservice-url=http://discovery.common.com/opensso/saml2reader
  2. .NET Fedlet 응용 프로그램과 연결된 응용 프로그램 풀을 다시 시작합니다.

Oracle OpenSSO Fedlet에 대한 일반 문제 및 해결 방법

개발할 항목

설명서 오류 정보

Fedlet Java API 참조는 Oracle OpenSSO 8.0 업데이트 2 Java API 참조에서 제공되며 http://docs.sun.com/coll/1767.1의 문서 모음에서 찾아볼 수 있습니다.


주 –

getPolicyDecisionForFedlet 메소드는 OpenSSO 8.0 업데이트 2 릴리스에서 지원되지 않습니다.