Заставить IDP включить указанный атрибут в ответ аутентификации - PullRequest
1 голос
/ 10 ноября 2011

Я просмотрел стандарт и API OpenSAML-J, но не могу найти очевидный способ сделать это. Возможно ли это, и если да, то как?

Что я хочу, так это включить что-то в AuthnRequest (который генерируется моим кодом и отправляется в IDP), в результате чего в конце AuthnResponse включается именованный атрибут с определенным значением , В идеале атрибут должен быть всегда включен, но он также будет работать, если атрибут включен только после успешной аутентификации. Желаемое имя и значение известны при создании AuthnRequest.

Я тоже немного подумал о RelayState, но это тоже не то, что я ищу.

Разрешены ли атрибуты в запросе аутентификации SAML? говорит о включении атрибутов в AuthnRequest, но, насколько я могу судить, использование расширений для включения атрибута не гарантирует, что тот же атрибут будет включен в окончательный ответ, выданный ВПЛ. (Но, может быть, я неправильно читаю основной раздел 7.2.1, и это действительно применимо к моему случаю?) Я не могу полагаться на поведение конкретной реализации; это должно быть гарантировано стандартом.

Любые предложения будут с благодарностью.

Единственное другое решение, которое я могу придумать, - это хранить соответствующие данные локально и ссылаться на них, используя атрибуты ID и InResponseTo в запросе и ответе соответственно, но это вносит немало накладных расходов и сложности. которого я бы предпочел избежать, если смогу.

Ответы [ 2 ]

1 голос
/ 10 ноября 2011

Может ли возможный обходной путь сделать AttributeQuery обратно в IdP после аутентификации пользователя?В AttributeQuery вы можете назвать любые атрибуты, которые вы заинтересованы в получении.Ответ вернет их, если сможет.

Не все продукты SAML поддерживают AttributeQuery, поэтому я не уверен, насколько гибко вы обладаете с обеих сторон вашей проблемы.

0 голосов
/ 12 апреля 2014

RelayState - правильная функция для использования. Поскольку все значения, которые вы хотите вернуть, уже известны во время создания запроса, вы можете просто сериализовать их в строку, указать как RelayState при отправке AuthnRequest и вернуть их вместе с AuthnResponse.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...