可以使用什么 SSO 解决方案不需要用户提示,也不依赖于固定的重定向 URI?

What SSO solution can be used that doesn't require a prompt from the user, and doesn't rely on fixed redirect URIs?

我正在寻找满足以下要求的 SSO 解决方案:

此外,一个奇怪的要求是我们不能仅根据其域名“信任”站点 B(网络应用程序在第 3 方服务上运行容器化,生成应用程序的域是随机的——但如果需要,我们可以将秘密存储在容器上)。

我查看了 OAuth2,但似乎需要在身份验证服务器 (站点 A)。不幸的是,应用程序的域是在每个用户的基础上动态生成的,因此无法提前知道要提供的 URI(除非我构建一些奇特的解决方法,应用程序容器在启动时向身份验证服务器“注册”自身) .

我想推出我自己的基于令牌的身份验证系统,但是,如果已经有这样做的标准,我不想重新发明轮子。有什么东西可以满足这些要求吗?

在查看我的选项后,我决定使用类似于 django-simple-sso 的自定义身份验证流程。身份验证方案是 non-standard AFAIK,但它处理我的用例。

如果有人好奇,身份验证流程如下:

  1. 站点 A 上创建了代表 站点 B 的“客户端应用程序”,具有 client_idsecret
  2. 站点 B 发出 back-end API 请求“请求令牌”,以及包含 client_idclient_secret.
  3. 此“请求令牌”允许 站点 B 将用户发送到 站点 A 上的 /sso/auth,以及一个 next 参数。 如果没有有效的请求令牌,站点 A 将不会重定向。
  4. /sso/auth 页面需要用户 session-based 身份验证。一旦通过身份验证,用户将被重定向到 next 参数,并在查询字符串中添加 token。此时请求令牌也被删除。
  5. 此身份验证令牌现在可以在 Authorize header 中用于 API 调用。