将用户名从 SP 发起的登录发送到预填写 IdP 登录表单?

Send username from SP-initiated login to pre-fill IdP login form?

我已经实现了 OneLogin PHP SAML 库并且一切正常,但是有人问我是否可以将电子邮件 address/username 从 SP 发起的登录发送到国内流离失所者。

你看,目前用户的登录流程将进入我网站上的登录表单,输入他们的电子邮件地址,此时登录表单将看到他们的帐户如何设置为登录并相应地重定向(或如果用户未通过 SAML 或 oAuth 进行身份验证,则显示密码字段。

以便请求发送用户已经在 SP 表单上输入的电子邮件地址,这样它就可以在 IdP 端预填写表单,这意味着用户不必输入两次详细信息.

我知道这可以通过 AuthnRequest 中的 <saml:Subject> 信息来完成,但我看不出有任何方法可以使用 OneLogin 库修改该数据。

我可能只是遗漏了 GitHub 回购文档中非常明显的东西,所以有人能指出我正确的方向吗?是否可以在请求中添加主题信息?

用于启动从 SP 到 IdP 的登录的代码非常简单:

$samlConfig = SamlEntities::getConfig($idpCode, $applicationCode);
$auth = new \OneLogin_Saml2_Auth($samlConfig);
$auth->login();

SamlEntities::getConfig 只是结合了数据库中的 SP 和 IdP 信息以及存储它们的配置文件。

所以我想如果可以的话,这就是做的地方。

SAML 请求不包含主题。感谢您已请求用户输入他们的用户 ID 以执行家庭领域发现,但这不会在 SAML 请求中传递到 Onelogin。

不过,这可能对你有用 OneLogin - OIDC - Implicit Flow - login_hint