Без некоторой относительно обширной настройки то, что вы описываете, на самом деле невозможно в 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:)