Всем доброе утро,
В настоящее время моя компания разрабатывает веб-приложение на 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>
Итак, моя первая пара вопросов.
Каким будет значение ID ?
И почему я могу объявить себя эмитентом ?
Знает ли провайдер идентификации обо мне?Может быть, это то, что Круг доверия
Я видел на OpenAM .И если он узнает обо мне, как он узнает обо мне и что ему нужно знать?
Таким образом, после того как пользователь перенаправит эту страницу, он будет перенаправлен на страницу, предоставленную IDP https://their.samlserver.com. Они аутентифицируются на этой странице, и IDP делает чудо, чтобы подтвердить аутентификацию и найти пользователя.После успешной аутентификации IDP отправляет обратно <samlp:Response>
определенный здесь .
Еще несколько вопросов.
Во-первых, как<samlp:Response>
вернуться к моему веб-приложению, чтобы я мог проверить его?
И что я должен искать в этом ответе, чтобы подтвердить, что он был успешным?Как выглядит сбой?
В настоящее время мы используем адрес электронной почты (LDAP) для идентификации пользователей, поэтому мы, вероятно, возьмем его из ответа и используем его так же, как сейчас.Что еще я должен помнить в этом ответе?
Итак, теперь, когда мы проверили этот ответ на достоверность, мы можем предоставить пользователю сеанс, как мы делаем в настоящее время.Но когда они хотят выйти, есть ли для этого рабочий процесс?Нужно ли мне уведомлять IDP о том, что пользователь ушел?
И, наконец, есть пара тем, которые обсуждались в моем чтении, и я не уверен, как они вписываются в этот рабочий процесс.Это Круг доверия , Жетоны и Артефакты .
Спасибо за любую помощь всем.Я нашел много информации за последние пару дней, и, возможно, я смогу собрать их вместе, немного поиграв.Но мне еще предстоит найти простую статью «Вот и все».Может быть, это потому, что я не прав, как это работает.Может быть, это потому, что это не так популярно.Но я действительно хотел убедиться, что у меня есть рабочий процесс, чтобы я не пропустил важный шаг в такой важной вещи, как аутентификация пользователя.