Мне поручено разработать очень простой процесс единого входа (единого входа). Мой работодатель указал, что он должен быть реализован в SAML. Я бы хотел создать максимально простые сообщения, подтверждая спецификации SAML.
Я был бы очень благодарен, если бы кто-то из вас посмотрел мои сообщения о запросе и ответе и сказал мне, если они имеют смысл для моей цели, если они включают в себя что-то, что не должно быть там, и если они отсутствуют все, что должно быть там.
Кроме того, я хотел бы знать, где в ответе я должен добавить дополнительную информацию о предмете; в частности, адрес электронной почты субъекта.
Взаимодействие должно работать следующим образом:
- Пользователь запрашивает услугу у поставщика услуг на данный момент, поставщик услуг ничего не знает о пользователе.
- Поставщик услуг запрашивает аутентификацию для пользователя от поставщика удостоверения.
- Пользователь аутентифицирован/зарегистрирован поставщиком удостоверений
- Поставщик удостоверений отвечает поставщику услуг с сообщением об успешности аутентификации, адресом электронной почты пользователя PLUS.
Здесь я думаю, что запрос должен быть:
<?xml version="1.0" encoding="UTF-8"?>
<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
ID="abc"
IssueInstant="1970-01-01T00:00:00.000Z"
Version="2.0"
AssertionConsumerServiceURL="http://www.IdentityProvider.com/loginPage">
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
http://www.serviceprovider.com
</saml:Issuer>
<saml:Subject>
<saml:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">3f7b3dcf-1674-4ecd-92c8-1544f346baf8</saml:NameID>
</saml:Subject>
Здесь я думаю, что ответ должен быть:
<?xml version="1.0" encoding="UTF-8"?>
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" Destination="http://www.serviceprovider.com/desitnationURL" ID="123" IssueInstant="2008-11-21T17:13:42.872Z" Version="2.0">
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</samlp:Status>
<saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" Version="2.0">
<saml:Subject>
<saml:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">3f7b3dcf-1674-4ecd-92c8-1544f346baf8</saml:NameID>
<saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:profiles:SSO:browser">
<saml:SubjectConfirmationData InResponseTo="abc"/>
</saml:SubjectConfirmation>
</saml:Subject>
<saml:AuthnStatement AuthnInstant="2008-11-21T17:13:42.899Z">
<saml:AuthnContext>
<saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef>
</saml:AuthnContext>
</saml:AuthnStatement>
</saml:Assertion>
</samlp:Response>
Итак, опять мои вопросы:
-
Является ли это действительным взаимодействием SAML?
-
Можно ли упростить XML-запрос или ответ?
-
Где в ответе я должен указать адрес электронной почты субъекта?
Я очень ценю вашу помощь. Большое спасибо!
-Morgan