OAuth/OIDC, SAML и внешние поставщики идентификации#
Сервис OIDC Discovery#
Blitz Identity Provider автоматически публикует сервис OIDC
Discovery в соответствии с
заданными в Blitz Identity Provider настройками. В составе сервиса можно
прописать адрес документации на OIDC сервис. Чтобы задать свой адрес
документации, необходимо в блоке настроек blitz.prod.local.idp.oauth
прописать настройку serviceDocumentationUrl со значением адреса
ссылки на документацию.
Адреса вызовов внешних поставщиков#
При внедрении Blitz Identity Provider может возникнуть потребность
настроить вызовы с серверов Blitz Identity Provider обработчиков внешних
поставщиков идентификации не напрямую, а через прокси сервер. В этом
случае есть необходимость изменить стандартные адреса обработчиков
внешних поставщиков идентификации на адреса, зарегистрированные на
прокси сервере. Чтобы скорректировать адреса обработчиков, необходимо
изменить значения настроек authUri, tokenUri, dataUri в
соответствующих блоках настроек внешних поставщиков идентификации в
blitz.prod.local.idp.federation.
Пример настроек для входа через внешний поставщик Google:
"federation" : {
"points" : {
"google" : [
{
…
"authUri" : "https://accounts.google.com/o/oauth2/auth",
"tokenUri" : "https://accounts.google.com/o/oauth2/token",
"dataUri" : "https://www.googleapis.com/oauth2/v1/userinfo?alt=json",
…
},
…
]
}
}
Внешний SAML-поставщик#
Blitz Identity Provider позволяет настроить вход через внешний поставщик идентификации, работающий по протоколу SAML 2.0.
Для этого необходимо в блоке настроек
blitz.prod.local.idp.federations создать внешний поставщик saml
со следующими настройками:
name– системное имя внешнего поставщика идентификации;humanReadableName– описание внешнего поставщика идентификации;clientId– имя поставщика услуг (EntityId), присвоенное Blitz Identity Provider при регистрации во внешнем SAML поставщике идентификации;signAuthnReq– определяет, должен ли Blitz Identity Provider подписывать SAML запрос, отправляемый внешнему поставщику идентификации;checkAssertionSign– определяет, необходимо ли проверять подпись SAML утверждений, полученных от внешнего поставщика идентификации (для ПРОД сред обязательно необходимо включать проверку подписи);блок
credentialsс настройками доступа к ключевому контейнеру, используемому для подписывания запросов к поставщику идентификации SAML. Настраивается опционально, в случае если для взаимодействия с внешним поставщиком идентификации требуется использовать отдельный контейнер ключей. Если настройка не задана, то ключи будут браться из основного keystore, настроенного в блокеblitz.prod.local.idp.keystore(при этом в качествеaliasбудет использоваться имя поставщика идентификации из настройки name).Задаются настройки:
alias– имя ключа в контейнере;keystore– блок настроек, содержащий тип контейнера (type), который может быть JCEKS или BKS, а также путь к контейнеру (path) и пароль к контейнеру (password);
idpMetaPath– путь к файлу, в котором хранятся метаданные внешнего поставщика идентификации (XML-файл с метаданными IDP);блок настроек
userMatching– задает правила сопоставления учетных записей:в настройке
type– признак, что используется базовая (значениеbuilder) настройка связывания учетных записей;в настройке
mapping– правила сопоставления учетных записей из внешнего SAML-поставщика идентификации учетным записям в Blitz Identity Provider;в настройке
matchingRules– правила переноса SAML-утверждений из внешнего поставщика идентификации в атрибуты учетной записи в Blitz Identity Provider;requireLogInToBind– признак «Предлагать пользователю ввести логин и пароль для привязки, если учетная запись не была идентифицирована»;strictMatching– признак «Требовать ввод пароля, если учетная запись была идентифицирована»;uniqueMatching– признак «Для привязки должна быть найдена только одна учетная запись по заданным правилам соответствия».
Пример настроек внешнего поставщика идентификации:
"federation" : {
"points" : {
"saml" : [
{
"name" : "demo-idp",
"humanReadableName" : "External SAML IDP",
"clientId" : "login.company.com",
"signAuthnReq" : true,
"checkAssertionSign" : true,
"_credentials" : {
"alias" : "demo-idp",
"keyStore" : {
"password" : "*****",
"path" : "demo-idp-key.jks",
"type" : "JCEKS"
}
},
"idpMetaPath" : "demo-idp-metadata.xml",
"userMatching" : {
"type" : "builder",
"mapping" : [
{
"attr" : "urn:saml:mail",
"master" : false,
"value" : "${email}"
}
],
"matchingRules" : [
[
{
"attr" : "urn:saml:mail",
"value" : "${email}"
}
]
],
"requireLogInToBind" : false,
"strictMatching" : false,
"uniqueMatching" : false
}
}
],
…
}
}
После создания настроек внешнего поставщика необходимо включить его в
списке доступных внешних поставщиков идентификации. Для этого в блок
настроек blitz.prod.local.idp.login в перечень методов
аутентификации (methods) в список внешних поставщиков входа
externalIdps добавить внешний поставщик c fedPoint,
соответствующий настроенному.
Пример настройки для включения внешнего поставщика идентификации с типом
saml и именем demo-idp:
"login" : {
…
"methods" : {
…
"externalIdps" : {
"idps" : [
…
{
"fedPoint" : "saml:demo-idp"
},
…
],
…
},
…
},
…
}
Настроить логотип для кнопки входа через внешний поставщик входа.
Внешний поставщик СУДИС#
Blitz Identity Provider позволяет настроить вход через внешний поставщик идентификации СУДИС.
Для этого необходимо в блоке настроек blitz.prod.local.idp.federations создать внешний поставщик sudis со следующими настройками:
name– системное имя внешнего поставщика идентификации;humanReadableName– описание внешнего поставщика идентификации;clientId– имя поставщика услуг (EntityId), присвоенное Blitz Identity Provider при регистрации в СУДИС;блок
credentialsс настройками доступа к ключевому контейнеру, используемому для подписывания и шифрования запросов к СУДИС. Должно использоваться ПО CMSServer, дистрибутив которого предоставляет поставщик СУДИС.Задаются настройки:
endpoint– адрес сервера CMSServer;fingerprint– SHA1 хэш сертификата IDP СУДИС. Указывается в формате{SHA1}значение;recipientKey– идентификатор ключа СУДИС (значениеcnизsubjectсертификата СУДИС);senderKey– идентификатор ключа Blitz Identity Provider, используемого для подписания запросов к СУДИС и расшифровывания ответов (значениеcnизsubjectсертификата Blitz Identity Provider, зарегистрированного в СУДИС);
idpEntityId–EntityIDСУДИС;sidAttrName– имя атрибута, используемого в качестве идентификатора учетной записи в СУДИС;ssoServiceLocation– адрес обработчика запроса запросов на аутентификацию в СУДИС;sloServiceResponseLocation– адрес ответа на запросы логаута, инициированные в СУДИР из СУДИС;sloServiceLocation– адрес обработчика логаута в СУДИС при инициировании логаута из СУДИР в СУДИС;блок настроек
userMatching– задает правила сопоставления учетных записей:в настройке
type– признак, что используется базовая (значениеbuilder) настройка связывания учетных записей;в настройке
mapping– правила сопоставления учетных записей из внешнего SAML-поставщика идентификации учетным записям в Blitz Identity Provider;в настройке
matchingRules– правила переноса SAML-утверждений из внешнего поставщика идентификации в атрибуты учетной записи в Blitz Identity Provider;requireLogInToBind– признак «Предлагать пользователю ввести логин и пароль для привязки, если учетная запись не была идентифицирована»;strictMatching– признак «Требовать ввод пароля, если учетная запись была идентифицирована»;uniqueMatching– признак «Для привязки должна быть найдена только одна учетная запись по заданным правилам соответствия».
Пример настроек внешнего поставщика идентификации:
"federation" : {
"points" : {
"sudis" : [
{
"clientId" : "<ENTITY_ID BLITZ>",
"credentials" : {
"endpoint" : "http://<CMS_HOST>:<CMS_PORT>",
"fingerprint" : "{SHA1}<FINGERPRINT SUDIS CERT>",
"recipientKey" : "<SUDIS_KEY SUBJECT.CN>",
"senderKey" : "<BLITZ_KEY SUBJECT.CN>"
},
"humanReadableName" : "SUDIS",
"idpEntityId" : "http://…",
"name" : "sudis",
"sidAttrName" : "oid",
"ssoServiceLocation" : "http://…/idp/profile/SAML2/POSTGOST/SSO",
"sloServiceLocation" : "http://…/idp/Logout",
"sloServiceResponseLocation" : "http://…/idp/profile/SAML2/Redirect/SLO",
"userMatching" : {
…
}
}
],
После создания настроек внешнего поставщика необходимо включить его в списке доступных внешних поставщиков идентификации. Для этого в блок настроек blitz.prod.local.idp.login в перечень методов аутентификации (methods) в список внешних поставщиков входа externalIdps добавить внешний поставщик c fedPoint, соответствующий настроенному.
Пример настройки для включения внешнего поставщика идентификации с типом sudis и именем sudis:
"login" : {
…
"methods" : {
…
"externalIdps" : {
"idps" : [
…
{
"fedPoint" : "sudis:sudis"
},
…
],
…
},
…
},
…
}