В даний час моя компанія розробляє веб-додаток Java. Кілька наших клієнтів мають внутрішні сервери SAML (постачальники ідентифікаторів?) І попросили нас інтегрувати з ними. Тож нещодавно я читав це і бавився з OpenAM. Приблизно через 3 дні цього я загально розумію це, але все ще є певні прогалини в моїх знаннях. Я сподіваюся, що хтось може це зрозуміти для мене.
Отже, ось як я уявляю робочий процес користувача, що входить в систему.
Давайте визначимо наших клієнтів SAML-сервером як https://their.samlserver.com . Тож користувач звертається до нашого веб-додатку щодо захищеного ресурсу. Скажімо, URL-адреса - це http://my.app.com/something .
Отже, якщо я правильно, my.app.com - це те, що SAML визначає як постачальника послуг . Наш додаток усвідомлює, що цьому користувачеві потрібно увійти. Потім ми представляємо користувачеві подібну сторінку ...
<script>JQuery Script to auto submit this form on ready</script>
<form method="post" action="https://their.samlserver.com/Post/Servlet">
<input type="hidden" name="SAMLRequest" value="someBase64Data" />
<input type="submit" value="Submit" />
</form>
І це someBase64Data
повинна бути base64
закодована версія цього ...
<samlp:AuthnRequest
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
ID="identifier_1"
Version="2.0"
IssueInstant="2004-12-05T09:21:59Z"
AssertionConsumerServiceIndex="0">
<saml:Issuer>http://my.app.com</saml:Issuer>
<samlp:NameIDPolicy
AllowCreate="true"
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"/>
</samlp:AuthnRequest>
Тож мої перші пара запитань.
Яким має бути значення ідентифікатора ?
І чому я можу заявити про себе як про емітента ?
Чи знає про мене постачальник документів? Можливо, це те коло довіри, яке я бачив у OpenAM . І якщо воно знає про мене, як воно знає про мене і що йому потрібно знати?
Тож після того, як користувач перенаправляє цю сторінку, вони потрапляють на сторінку, надану ВПО https://their.samlserver.com . Вони аутентифікуються на цій сторінці, і ВПО робить магію перевірити автентифікацію та шукати користувача. Після успішної автентифікації IDP надсилає назад <samlp:Response>
визначений тут .
Ще кілька запитань.
По-перше, як відбувається <samlp:Response>
повернення до моєї веб-програми, щоб я міг її перевірити?
І що я повинен шукати у цій відповіді, щоб підтвердити, що вона була успішною? Як виглядає невдача?
В даний час ми використовуємо адресу електронної пошти (LDAP) для ідентифікації користувачів, тому, ймовірно, ми візьмемо це з відповіді та використаємо те саме, що і зараз. Щось інше, про що я повинен пам’ятати у відповіді?
Тож тепер, коли ми перевірили відповідь на відповідність, ми можемо надати користувачеві сеанс, як і зараз. Але коли вони хочуть вийти, чи існує для цього робочий процес? Чи потрібно повідомляти ВПО про те, що користувач пішов?
І нарешті, є кілька тем, які були кинуті в моєму читанні, і я не впевнений, як вони вписуються в цей робочий процес. Це коло довіри , жетони та артефакти .
Дякуємо за будь-яку допомогу всім. Протягом останніх кількох днів я знайшов багато інформації, і цілком можливо, що я міг би зібрати їх разом, ще трохи погравши. Але я ще не знайшов прямої статті про робочий процес "Ось пост". Можливо, це тому, що я помиляюся, як це працює. Можливо, це тому, що це не так популярно. Але я дуже хотів переконатися, що отримав робочий процес, щоб не пропустити важливий крок у чомусь такому важливому, як аутентифікація користувачів.