作为 IdP,Google 支持登录提示参数,以便在用户执行服务提供商 (SP) 发起的登录时简化登录流程。存在登录提示时,Google 身份验证服务器会使用提示执行以下操作:
- 预填充电子邮件地址字段:身份验证服务器会在登录表单中预填充电子邮件地址,从而为用户省去这一步。
- 启用直接登录:如果与提示关联的用户已与 Google 建立有效会话,服务器会自动使其登录,从而提供流畅的体验。
对服务提供商的要求
如果您的应用知道尝试登录的用户的身份,则可以在发送到单点登录网址的 HTTP 请求中包含登录提示参数 (login_hint)。login_hint 的值应为用户的 NameID,如以下示例所示:
https://www.accounts.google.com/o/saml2/idp?idpid=<customer_id>&login_hint=<email_id_of_the_user>
注意:Google 的 SAML IdP 不会使用 AuthnRequest 的 Subject 元素中可能存在的 NameID。请改用 login_hint。
使用登录提示时的登录行为
下表总结了当 SAML 请求中存在登录提示参数时,用户登录 Google 的方式会有什么不同:
| 已登录的用户 | 登录提示值 | 行为 |
|---|---|---|
| 无 | 不存在 | 用户会看到常规的 Google 登录页面。 |
| user@domain.com | Google 登录页面上的电子邮件地址会使用 user@domain.com 进行预填充。user@domain.com | |
| user1@domain.com | 不存在 | 系统会绕过 Google 登录页面,并让 user1 直接登录服务提供商。 |
| user1@domain.com | ||
| user2@domain.com | Google 登录页面会使用 user2@domain.com 进行预填充。user2@domain.com | |
| user1@domain.com user2@domain.com |
不存在 | Google 账号选择器界面会显示所有已登录的用户。 |
| user1@domain.com |
系统会绕过 Google 登录页面,并让 user1 直接登录服务提供商。 |
|
| user2@domain.com | 系统会绕过 Google 登录页面,并让 user2 直接登录服务提供商。 | |
|
user3@domain.com |
Google 登录页面会使用 user3@domain.com 进行预填充。user3@domain.com |