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