WSS API를 사용하여 SAML 속성 삽입
JAX-WS(Java™ API for XML-Based Web Services) 프로그래밍 모델 및 WSS API(Web Services Security API)를 사용하여 사용자 정의 속성을 자체 발행 SAML 토큰으로 삽입할 수 있습니다.
시작하기 전에
이 태스크에서는 사용자가 JAX-WS
프로그래밍 모델, WSS API 인터페이스, SAML 개념 및
웹 서비스 설정을 구성하고 관리하기 위한 정책 세트 사용에 익숙한 것으로 가정합니다.
이 태스크를 시작하기 전에 다음 조치를 완료하십시오.
- WSS API를 사용한 자체 발행 SAML 전달자 토큰 전파에 대해 읽어 보십시오.
- 메시지 레벨 보호와 함께 WSS API를 사용한 자체 발행 SAML 전송자 인증 토큰 전파에 대해 읽어 보십시오.
- SSL 전송 보호와 함께 WSS API를 사용한 자체 발행 SAML 전송자 인증 토큰 전파에 대해 읽어 보십시오.
- WSS API를 사용하여 대칭 키를 포함하는 자체 발행 SAML HoK(holder-of-key) 토큰 전파에 대해 읽어 보십시오.
- WSS API를 사용하여 비대칭 키를 포함하는 자체 발행 SAML HoK(holder-of-key) 토큰 전파에 대해 읽어 보십시오.
이 태스크 정보
프로시저
SAML 보안 토큰을 작성할 때 사용자 정의 속성을 삽입하십시오. 예를 들면, 다음과 같습니다.
import com.ibm.websphere.wssecurity.wssapi.token.SecurityToken;
import com.ibm.websphere.wssecurity.callbackhandler.SAMLGenerateCallbackHandler;
import com.ibm.websphere.wssecurity.wssapi.token.SAMLToken;
import com.ibm.wsspi.wssecurity.core.token.config.WSSConstants;
import com.ibm.wsspi.wssecurity.saml.config.SamlConstants;
import com.ibm.wsspi.wssecurity.saml.data.SAMLAttribute;
WSSFactory factory = WSSFactory.getInstance();
HashMap<Object, Object> map = new HashMap<Object, Object>();
map.put(SamlConstants.CONFIRMATION_METHOD, "Bearer");
map.put(SamlConstants.Token_REQUEST, "issue");
map.put(SamlConstants.TOKEN_TYPE, WSSConstants.SAML.SAML20_VALUE_TYPE);
map.put(SamlConstants.SAML_NAME_IDENTIFIER, "Alice");
map.put(SamlConstants.SIGNATURE_REQUIRED, "true");
ArrayList<SAMLAttribute> al = new ArrayList<SAMLAttribute>();
String groups[] = {"IBMer", "Texan"};
SAMLAttribute sattribute = new SAMLAttribute("Membership", groups, null,null, null, null);
al.add(sattribute);
String gender[] = {"Female"};
sattribute = new SAMLAttribute("Gender", gender, null,null, null, null);
al.add(sattribute);
map.put(SamlConstants.SAML_ATTRIBUTES, al);
SAMLGenerateCallbackHandler callbackHandler = new SAMLGenerateCallbackHandler(map);
SecurityToken samlToken = factory.newSecurityToken(SAMLToken.class, callbackHandler,
"system.wss.generate.saml");
결과
사용자 정의 속성은 SAML 보안 토큰에 삽입했습니다.
예
<saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"
Version="2.0"
ID="_E62A1CA3C2F21D9A9B1287772824570"
IssueInstant="2010-10-22T18:40:24.531Z">
<saml2:Issuer>example.com</samls2:Issuer>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
...
</ds:Signature>
<saml2:Subject>
<saml2:NameID>Alice</saml2:NameID>
<saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"></saml2:SubjectConfirmation>
</saml2:Subject>
<saml2:Conditions NotBefore="2010-10-22T18:40:24.531Z"
NotOnOrAfter="2010-10-22T19:40:24.531Z">
</saml2:Conditions>
<saml2:AttributeStatement>
<saml2:Attribute Name="Membership">
<saml2:AttributeValue>IBMer</saml2:AttributeValue>
<saml2:AttributeValue>Texan</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute Name="Gender">
<saml2:AttributeValue>Female</saml2:AttributeValue>
</saml2:Attribute>
</saml2:AttributeStatement>
</saml2:Assertion>