2017-02-15 6 views

답변

0

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() 메소드를 다룹니다.

(210)

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를 구성합니다.

주요 문서 :

+0

감사합니다 스콧. 나는 맞춤화 된 TAI를 사용하지 않았다. 필자는 인증이 com.ibm.ws.security.web.saml.ACSTrustAssociationInterceptor에 의해 수행 된 후에 궁금해했습니다. 요청은 내 서블릿 A로 이동합니다. 서블릿 A의 TAIResult를 사용하여 Subject를 채울 수 있습니까? 또는 Subject를 채우는 코드 예제가 있습니까? – rickcoup

+0

맞춤 TAI를하지 않아도된다는 의미였습니다. – rickcoup

+0

보안 자원 인 서블릿으로 리디렉션을 실행하면 제목을 사용할 수 있어야합니다. TAI 인증이 발생한 경우에도 초기 인증되지 않은 요청에서이 인증서를 사용할 수 있는지 확신 할 수 없습니다. –