API를 사용하여 SAML 전달자 토큰 작성

SAML 라이브러리 API를 사용하여 SAML 전달자 토큰을 작성할 수 있습니다.

이 태스크 정보

이 라이브러리를 사용하여 SAML 전달자 토큰을 작성할 수 있습니다. SAML 라이브러리 API를 사용하여 필수 SAML 구성 오브젝트를 작성한 다음 해당 구성 오브젝트를 전달자 SAML 토큰을 생성하는 데 사용할 수 있습니다.

프로시저

  1. SAML 토큰 버전을 매개변수로 사용하여 SAMLTokenFactory 인스턴스를 작성하십시오.
    1. 다음 코드 행을 사용하여 메소드를 가져오십시오.
      import com.ibm.websphere.wssecurity.wssapi.token.SAMLTokenFactory;
    2. 토큰 버전에 따라 이러한 코드 행 중 하나를 사용하여 인스턴스를 작성하십시오.
      • 버전 1.1 SAML 토큰에 대해 SAMLTokenFactory 인스턴스를 작성하려면 다음 코드 행을 추가하십시오.
        SAMLTokenFactory samlFactory = SAMLTokenFactory.getInstance(SAMLTokenFactory.WssSamlV11Token11);
      • 버전 2.0 SAML 토큰에 대해 SAMLTokenFactory 인스턴스를 작성하려면 다음 코드 행을 추가하십시오.
        SAMLTokenFactory samlFactory = SAMLTokenFactory.getInstance(SAMLTokenFactory.WssSamlV11Token20);
  2. 인스턴스를 작성한 후에 SAMLTokenFactory는 요청자의 인증 요구사항에 따라 토큰이 생성되는 방식을 판별하는 RequesterConfig 인스턴스를 작성하는 데 사용됩니다. 이 코드 행을 사용하여 전달자 토큰에 대해 RequesterConfig 인스턴스를 작성하십시오.
    RequesterConfig reqData = samlFactory.newBearerTokenGenerateConfig();
    기본 RequestConfig 인스턴스는 단순 전달자 토큰을 생성하는 데에는 충분하지만 RequesterConfig 인스턴스를 사용자 정의하여 추가 어설션을 SAML 토큰에 포함시킬 수 있습니다. 예를 들어, 비밀번호 인증 정보를 토큰에 포함시키려면 setAuthenticationMethod를 사용하십시오.
    reqData.setAuthenticationMethod(“password”);
    SAML 어설션에서 서명을 사용 안함으로 설정하려면 setAssertionSignatureRequired 메소드를 사용하십시오. 예를 들면, 다음과 같습니다.
    reqData.setAssertionSignatureRequired(false);
    자세한 정보는 SAML 전달자 어설션에 대해 읽어 보십시오.
  3. SAMLTokenFactory를 사용하여 토큰 발행자를 설명하는 ProviderConfig 인스턴스를 작성하십시오. ProviderConfig 인스턴스는 SAML 암호화 및 서명의 키를 식별하는 키 저장소 및 신뢰 저장소 정보 외에도 SAML 발행자 이름을 지정합니다. ProviderConfig 인스턴스는 특성 파일의 특성 값을 사용하여 작성됩니다. 특성 파일은 ProviderConfig 오브젝트의 기본값을 지정합니다. Java™ 클라이언트 환경에서 이 특성 파일은 JVM 시스템 특성 com.ibm.webservices.wssecurity.platform.SAMLIssuerConfigDataPath에 의해 정의됩니다.
    WebSphere® Application Server 런타임 환경에서 특성 파일 이름은 SAMLIssuerConfig.properties입니다. 이 파일은 해당 우선순위 순으로 서버 레벨 구성 디렉토리 또는 셀 레벨 디렉토리에 있을 수 있습니다. 서버 레벨 경로의 예는 다음과 같습니다.
    app_server_root/profiles/$PROFILE/config/cells/$CELLNAME/nodes/$NODENAME/servers/$SERVERNAME/SAMLIssuerConfig.properties
    셀 레벨 경로의 예는 다음과 같습니다.
    app_server_root/profiles/$PROFILE/config/cells/$CELLNAME/sts/SAMLIssuerConfig.properties

    특성이 서버 런타임 환경에서 정의되는 경우에 JVM 시스템 특성 com.ibm.webservices.wssecurity.platform.SAMLIssuerConfigDataPath는 무시됩니다. 모든 특성의 세부 설명은 토큰 작성 중 SAML 토큰의 구성에 대해 읽어 보십시오.

    다음 코드 행을 사용하여 기본 ProviderConfig 인스턴스를 작성하십시오.

    ProviderConfig samlIssuerCfg = samlFactory.newDefaultProviderConfig(“any issuer name”);
    발행자 이름은 선택적입니다. 발행자 이름이 지정되는 경우 발행자 이름이 SAML 어설션에 표시됩니다. 발행자 이름이 지정되지 않은 경우 SAMLIssuerConfig.properties의 기본 발행자 이름 특성이 발행자 이름으로 사용됩니다.
  4. 옵션: 새 SAML 토큰을 작성할 때 SAMLTokenFactory는 JAAS 주제 또는 CredentialConfig 인스턴스를 사용하여 새 SAML 토큰을 채웁니다. JAAS 주제를 사용하여 토큰을 채우려면 com.ibm.websphere.security.auth.WSSubject getCallerSubject() API 또는 getRunAsSubject() API를 사용하여 요청 클라이언트 또는 실행 스레드의 ID를 나타내는 JAAS 주제를 얻으십시오.

    JAAS 주제를 사용하여 새 SAML 토큰을 작성할 때 SAMLTokenFactory는 주제 PrivateCredentials 목록에서 SAMLToken 오브젝트를 검색합니다. SAMLToken 오브젝트가 존재하는 경우 NameId 또는 NameIdentifier가 새 SAML 토큰에 복사됩니다. SAMLTokenFactory도 기존 SAML 토큰의 SAML 속성 및 AuthenticationMethod를 새 SAML 토큰에 복사합니다. 새 SAML 토큰은 새 발행자 이름, 새 서명 인증서, 확인 메소드, HoK(holder-of-key) 확인 메소드의 새 키 정보 및 새 NotBefore 및 NotOnAfter 조건을 포함합니다. 이러한 토큰 설정은 ProviderConfig 및 RequesterConfig 오브젝트의 구성 매개변수에 의해 판별됩니다.

    주제에 SAMLToken 오브젝트가 없는 경우 WSPrincipal 프린시펄 이름이 주제에서 새 SAML 토큰으로 복사됩니다. 주제의 다른 속성은 새 SAML 토큰에 복사되지 않습니다. 마찬가지로 발행자 이름, 서명 인증서, 확인 메소드, HoK(holder-of-key)의 키 정보 및 NotBefore와 NotOnOrAfter 조건은 ProviderConfig 및 RequesterConfig 오브젝트의 구성 매개변수에 의해 판별됩니다.

    또는 실행 스레드에서 RunAsSubject 메소드를 사용하여 SAML 토큰을 작성할 수 있습니다. 이 메소드를 사용할 때 SAML 토큰을 작성하기 위해 JAAS 주제 또는 CredentialConfig 오브젝트를 SAMLTokenFactory에 전달하지 마십시오. 대신 앞서 설명한 대로 기존 SAML 토큰의 컨텐츠가 새 SAML 토큰에 복사됩니다.

    SAML 토큰을 작성하는 또 다른 방법은 CredentialConfig 오브젝트를 사용하여 SAML NameId 및 속성을 프로그래밍 방식으로 채우는 것입니다. 다음 환경에서 이 메소드를 사용하십시오.
    • 사용자 정의 SAML 속성이 새 SAML 토큰에 포함되어야 합니다.
    • SAMLTokenFactory를 사용하여 JAAS 주제로부터 SAML 토큰을 자동으로 채우는 대신 SAML 토큰을 수동으로 작성합니다.
    • 주제에 기존 SAML 토큰이 없습니다.
    • 사용 가능한 JAAS 주제가 없습니다.

    JAAS 주제를 사용하지 않고 CredentialConfig 오브젝트를 작성하려면 다음 코드 행을 사용하십시오.

    CredentialConfig cred = samlFactory.newCredentialConfig ();
    이 CredentialConfig 오브젝트에 대해 제공되는 초기값이 없으므로 Setter 메소드를 사용하여 CredentialConfig 오브젝트를 채워야 합니다.
    SAML NameIdentifier 또는 NameID를 채우려면 다음 코드 행을 사용하십시오.
    cred.setRequesterNameID("any name");
    any name 변수의 값은 SAML 토큰에서 프린시펄 이름으로 사용됩니다. 이 이름은 SAML 버전 1.1 토큰에서는 NameIdentifier로, SAML 버전 2.0 토큰에서는 NameId로 어설션에 표시됩니다. 예를 들어, any name의 값이 Alice인 경우 SAML 버전 1.1 토큰에서 다음 어설션이 생성됩니다.
    <saml:NameIdentifier>Alice</saml:NameIdentifier>
    다음 어설션은 SAML 버전 2.0 토큰에서 생성됩니다.
    <saml2:NameID>Alice</saml2:NameID> 

    어설션의 <AttributeStatement> 부분에 SAML 속성을 포함하려면 다음 코드를 사용하십시오.

    SAMLAttribute samlAttribute = new SAMLAttribute("email" /* Name*/, new String[] {"joe@websphere"} 
    /*Attribute Values*/, null, "IBM WebSphere namespace" /* namespace*/, "email" /* format*/, "joe" /*friendly name */);
    ArrayList<SAMLAttribute> al = new ArrayList<SAMLAttribute>();
    al.add(samlAttribute)
    sattribute = new SAMLAttribute("Membership", new String[] {"Super users", "Gold membership"}, null, null /* format*/, null, null );
    al.add(samlAttribute );
    cred.setSAMLAttributes(al);
    이 샘플 코드는 다음 <Attribute> 어설션을 생성합니다.
    <saml:Attribute AttributeName="email" NameFormat="email" AttributeNamespace="IBM WebSphere namespace">
    <saml:AttributeValue>joe@websphere</saml:AttributeValue>
    </saml:Attribute>
    <saml:Attribute AttributeName="Membership">
    <saml:AttributeValue>Super users</saml:AttributeValue><saml:AttributeValue>Gold membership</saml:AttributeValue>
    </saml:Attribute>
  5. 다음 코드 행을 사용하여 SAML 전달자 토큰을 생성하십시오.
    SAMLToken samlToken = samlFactory.newSAMLToken(cred, reqData, samlIssuerCfg);
    이 메소드는 Java 보안 권한 wssapi.SAMLTokenFactory.newSAMLToken을 요구합니다.

    이전 단계의 코드 행을 사용하는 완전한 코드 샘플이 예제 섹션에 포함되어 있습니다.

다음 샘플 코드를 사용하여 주제에서 SAML 버전 1.1 전달자 토큰을 작성하십시오.
SAMLTokenFactory samlFactory = SAMLTokenFactory.getInstance(SAMLTokenFactory.WssSamlV11Token11)

RequesterConfig reqData = samlFactory.newBearerTokenGenerateConfig();

ProviderConfig samlIssuerCfg = samlFactory.newDefaultProviderConfig(“WebSphere Server”);

Subject subject =  com.ibm.websphere.security.auth.WSSubject.getRunAsSubject(); 

SAMLToken samlToken = samlFactory.newSAMLToken(subject, reqData, samlIssuerCfg);
다음 샘플 코드를 사용하여 주제를 사용하지 않고 SAML 버전 1.1 전달자 토큰을 작성하십시오.
SAMLTokenFactory samlFactory = SAMLTokenFactory.getInstance(SAMLTokenFactory.WssSamlV11Token11);

RequesterConfig reqData = samlFactory.newBearerTokenGenerateConfig();
reqData.setAuthenticationMethod("Password"); //Authentication method for Assertion

ProviderConfig samlIssuerCfg = samlFactory.newDefaultProviderConfig(Self issuer);

CredentialConfig cred = samlFactory.newCredentialConfig ();
cred.setRequesterNameID("Alice");   // SAML NameIdentifier
//SAML attributes:	
SAMLAttribute attribute = new SAMLAttribute
   ("email" /* Name*/, new String[] {"joe@websphere"} 
   /*Attribute Values in String*/,null 
   /*Attribute Values in XML */, "WebSphere" /* Namespace*/, "email" /* format*/, "joe" /*Friendly_name */);
ArrayList<SAMLAttribute> al = new ArrayList<SAMLAttribute>();
al.add(attribute);
attribute = new SAMLAttribute("Membership", new String[] {"Super users", "My team"}, null, null, null, null  );
al.add(attribute);
cred.setSAMLAttributes(al);

SAMLToken samlToken = samlFactory.newSAMLToken(cred, reqData, samlIssuerCfg);

주제 유형을 표시하는 아이콘 태스크 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_createbearertoken
파일 이름:twbs_createbearertoken.html