이 기사에서 https://www.ibm.com/developerworks/library/mw-1612-lansche-trs/index.html에 따라 com.ibm.ws.security.web.saml.ACSTrustAssociationInterceptor를 구현했습니다. 그리고 그것은 작동하는 것 같습니다. 누구나 TAIResult에서 주제를 채우는 예제 코드가 있습니까?TAIResult에서 Subject를 채우는 방법?
답변
IBM SAML TAI (com.ibm.ws.security.web.saml.ACSTrustAssociationInterceptor
그것은는 WebSphere 신뢰 연관 인터셉터 프레임 워크의 구현입니다. IBM에서 제공하는 자바 클래스 및 사용자 정의 Java 코드를 작성하지 않고도 신뢰를 구축하기위한 SAML 사양을 사용합니다.
에 기초 이 기사에서는 IBM Java 인터페이스 (com.ibm.wsspi.security.tai.TrustAssociationInterceptor
)를 구현하는 사용자 정의 코드를 작성하는 방법에 대해 설명합니다.이 가이드에서는이 기사의 링크를 따라 가면서 기본 TAI 프레임 워크에 대한 훨씬 오래된 (여전히 유효한) technical article에 대한 링크를 따라 간 것처럼 보입니다. 자신의 신뢰 로직을 사용하고 구현해야하는 public TAIResult negotiateValidateandEstablishTrust()
메소드를 다룹니다.
TAI article에서 약간 낮은는 TAIResult 클래스의 세 가지 정적 메소드의 개요는 정체성을 채울 수 있도록하는 것입니다 :
TAIResult 클래스는 TAIResult, 을 만들기위한 세 가지 정적 메소드가 모두 항상 어떤의 첫 번째 매개 변수로 int를 가져옵니다. 이 매개 변수 는
당신은 Subject
두 가지의 방법을 구축 할 수 있습니다 ... 유효한 HTTP 요청 리턴 코드가 될 것으로 예상된다 : WebSphere를 수동으로 providing a userid string에 의해 자동으로 하나 (및 WebSphere는 사용자 저장소를 조회 할 수 있도록) 또는를 만들 수있다 , by programmatically creating one. 수동 접근 방식이 가장 강력합니다. 그룹 구성원 자격을 포함하여 즉석에서 임시 사용자를 만들거나 다른 WAS API를 사용하여 완전히 채워진 Subject
을 만든 다음 수정할 수 있습니다 (예 : 그룹 추가). (기본 사용자 저장소가 아닌) 즉석에서 회원으로 가입 할 수 있습니다.
definitive guide to WAS authentication and TAI implementation의 "TAI Usage"절에 각 Subject
접근법에 대한 코드 샘플이 있습니다.
자신 만의 Subject
을 작성하거나 사용자 정의 신임 오브젝트를 추가하는 경우, 클래스가 직렬화 가능해야합니다 (전파 섹션 참조).
negotiateValidateandEstablishTrust()
방법에 즉시에
Subject
를 구축 설명 기사에서 예입니다 : 당신이 언급 IBM의 SAML TAI에서
String userid = "the_user_id"; //get from request, etc
InitialContext ctx = new InitialContext();
UserRegistry reg =(UserRegistry)ctx.lookup("UserRegistry");
String uniqueid = reg.getUniqueUserID(userid);
//define groups
ArrayList groups = new ArrayList();
// add admin group
groups.add(reg.getUniqueGroupId("Administrators"));
// stash in hashtable
Hashtable hashtable = new Hashtable();
hashtable.put(AttributeNameConstants.WSCREDENTIAL_UNIQUEID,uniqueid);
hashtable.put(AttributeNameConstants.WSCREDENTIAL_SECURITYNAME,userid);
hashtable.put(AttributeNameConstants.WSCREDENTIAL_GROUPS,groups);
hashtable.put(AttributeNameConstants.WSCREDENTIAL_CACHE_KEY,uniqueid+"MyCustom");
Subject subject = new Subject();
subject. getPublicCredentials().add(hashtable);
return TAIResult.create(HTTPServletResponse.SC_OK, "ignored", subject);
, 그들은 그들 자신의 구현 위에서 다양한 문법의 SAML XML 문서를 읽고 HttpServletRequest
에서 처리하여 구성에 따라 임시 또는 레지스트리 사용자 ID를 구성합니다.
주요 문서 :
- Advanced authentication in WAS합니다 (TAI 프레임 워크 및 기타 플러그 포인트를 포함)
- TrustAssociationInterceptor javadoc는
- TAIResult javadoc는
- IBM SAML TAI Overview
감사합니다 스콧. 나는 맞춤화 된 TAI를 사용하지 않았다. 필자는 인증이 com.ibm.ws.security.web.saml.ACSTrustAssociationInterceptor에 의해 수행 된 후에 궁금해했습니다. 요청은 내 서블릿 A로 이동합니다. 서블릿 A의 TAIResult를 사용하여 Subject를 채울 수 있습니까? 또는 Subject를 채우는 코드 예제가 있습니까? – rickcoup
맞춤 TAI를하지 않아도된다는 의미였습니다. – rickcoup
보안 자원 인 서블릿으로 리디렉션을 실행하면 제목을 사용할 수 있어야합니다. TAI 인증이 발생한 경우에도 초기 인증되지 않은 요청에서이 인증서를 사용할 수 있는지 확신 할 수 없습니다. –