2011-11-10 3 views
1

표준을 살펴보고 OpenSAML-J API를 탐색했지만이를 수행 할 확실한 방법을 찾을 수 없습니다. 가능합니까? 그렇다면 어떻게 될까요?IDP가 인증 응답에 지정된 속성을 포함하도록했습니다.

는 내가 원하는 특정 값으로 명명 된 속성을 포함하는 최종 AuthnResponse 원인 (내 코드에 의해 생성과 IDP에 게시됩니다)를 AuthnRequest뭔가을 포함하는 것입니다. 속성은 항상 포함되어야하지만 이상적인 경우 속성이 성공적인 인증시에만 포함되는 경우에도 작동합니다. AuthnRequest가 생성 될 때 원하는 이름과 값을 모두 알 수 있습니다.

잠시 동안 RelayState을 생각했지만 그게 내가 찾고있는 것으로 보이지 않습니다.

Are attributes allowed in a SAML authentication request?은 AuthnRequest와 함께 속성을 포함하는 것에 대해 이야기하지만, 내가 말할 수있는 한, 속성을 포함하기 위해 확장자를 사용한다고해서 동일한 속성이 IDP에 의해 발행 된 최종 응답에 포함된다는 보장은 없습니다. (하지만 어쩌면 핵심 섹션 7.2.1을 잘못 읽고 있는데 실제로이 경우에 적용됩니까?) 특정 구현의 동작에 의존 할 수는 없습니다. 그것은 표준에 의해 보장되어야합니다.

모든 의견을 크게 기뻐할 것입니다.

제가 생각할 수있는 유일한 해결책은 관련 데이터를 로컬에 저장하고 각각 요청 및 응답에 및 InResponseTo 속성을 사용하여 참조하는 것입니다.하지만 이는 상당한 오버 헤드와 복잡성을 초래합니다. 가능한 경우 피하십시오.

답변

1

가능한 해결 방법은 사용자가 인증 한 후에 IdP로 AttributeQuery를 다시 만들 수 있습니까? AttributeQuery에서 검색하는 데 관심이있는 속성의 이름을 지정할 수 있습니다. 응답은 가능한 경우 응답을 리턴합니다.

SAML 제품이 모두 AttributeQuery를 지원하는 것은 아니므로 문제의 어느쪽에 어느 정도 유연성이 있는지 잘 모르겠습니다.

+0

문제는 속성 값이 원래의 인증 요청에 따라 다르므로 IDP는 요청 될 때까지 해당 정보를 저장해야하며 어색한 것으로 들립니다. 어쩌면 총알을 물고 데이터를 로컬에 저장해야 할 것입니다. 적어도'ID'와'InResponseTo'는 모두 표준에 의해 요구되며, 이는 약간의 추가 데이터베이스 왕복과 약간의 추가 복잡성을 의미한다고 할지라도 제 목적을 위해 작동하는 의미론을 가지고 있습니다. –

+0

개인적으로 ID/InResponseTo 대신 RelayState를 활용할 것을 권장합니다. ID로 같은 것을 얻을 수 있다고 확신하지만, RelayState는 요청/응답 사이에 상태를 유지하면서 설명하는 것과 정확히 일치하는 것을 의도합니다. 나중에 사용하려는 속성/값을 조회 할 세션 식별자가 포함될 수 있습니다. –

0

RelayState는 사용할 수있는 기능입니다. 반환 된 모든 값은 요청 작성 중에 이미 알려져 있으므로 문자열로 직렬화하고 AuthnRequest를 보낼 때 RelayState로 제공하고 AuthnResponse와 함께 반환되도록 할 수 있습니다.

관련 문제