Как предоставить несколько URI в качестве значения типа во время обмена атрибутами внутри тега <openid-atribute> в security-context.xml? - PullRequest
1 голос
/ 29 августа 2011

Я использую Spring Security 3.0.5 для обеспечения аутентификации и авторизации на веб-сайте, над которым я работаю ... для доступа к атрибуту электронной почты, который я определил следующим образом ... <security:openid-attribute name="email" type="http://schema.openid.net/contact/email" required="true" count="2"/>

СейчасЯ хочу обеспечить поддержку всех трех типов атрибутов Все три типа .Как я могу обеспечить поддержку нескольких атрибутов.

Спасибо,

1 Ответ

1 голос
/ 30 августа 2011

Без некоторой относительно обширной настройки то, что вы описываете, на самом деле невозможно в Spring Security 3.0.5. У меня есть пара вариантов, о которых я могу подумать:

Создание различных openid-attribute сопоставлений для каждой возможной комбинации схем. Например:

<security:openid-attribute name="email" type="http://axschema.org/contact/email" required="true" count="2"/>
<security:openid-attribute name="email2" type="http://schema.openid.net/contact/email" required="true" count="2"/>
<security:openid-attribute name="email3" type="http://openid.net/schema/contact/email" required="true" count="2"/>

Боль этой опции в том, что вам нужно будет смотреть на 3 разных значения атрибута, когда вы пытаетесь что-то сделать с этими атрибутами.

Используйте функциональность Spring Security 3.1, поддерживающую identifier-matcher для каждого элемента openid-attribute, чтобы ограничить использование определенных схем поставщиком OpenID. Преимущество этого состоит в том, что вы потенциально можете использовать только одно имя атрибута и ожидать, что функциональность identifier-matcher выберет правильное. Недостатком является то, что вам нужно будет выполнить домашнюю работу, чтобы выяснить, какие поставщики OpenID поддерживают, какие схемы и атрибуты.

К сожалению, в обоих случаях не очень удачное решение - добро пожаловать в мир OpenID AX:)

...