Относительно этого драгоценного камня: https://github.com/apokalipto/devise_saml_authenticatable
Я использую его вместе с devise в моем приложении rails, и у меня появляется эта ошибка:
ActiveRecord::RecordInvalid in Devise::SamlSessionsController#create
Validation failed: Password can't be blank
Полагаю, это потому, что когда я вхожу в devise, devise хочет создать нового пользователя, и у devise есть проверка присутствия по паролю, он не видит, что я даю ему какой-либо пароль, поэтому он жалуется. (Я могу ошибаться)
При успешном входе в IDP мой IDP возвращает их поставщику услуг:
- 2 атрибута (мое имя и мой адрес электронной почты)
- 1 имя, идентификатор (мой идентификатор)
Мой IDP не возвращает пароль SP, и моя команда IDP сказала, что мы не должны передавать пароль при использовании SAML.
Мой поставщик услуг настроен со следующими настройками:
config.saml_create_user = true
config.saml_update_user = true
config.saml_default_user_key = :email
config.saml_session_index_key = :session_index
config.saml_use_subject = false
config.idp_settings_adapter = nil
Можно ли как-нибудь безопасно и безопасно использовать devise, не передавая пароль в приложение? Это должен быть разумный способ сделать все правильно? Потому что, если мы собираемся использовать SAML, чтобы каждый раз запрашивать IDP для аутентификации пользователя, нам не нужно отслеживать пароль на использование, верно? Мы можем просто попросить IDP сделать это для нас.
Кроме того, читая файл и код README, я не совсем понимаю saml_default_user_key
, кто-нибудь может объяснить, почему мы должны включить этот ключ и для чего он используется?
Также кажется, что saml_default_user_key
тесно связано с saml_use_subject
, что я тоже не понимаю, особенно о том, почему мы должны сравнивать его с электронной почтой?