可以使用什么 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 解决方案:
- 用户帐户存储在 站点 A(运行 在 Django 上)
- 站点 A 还提供 API
- 站点 B 需要对 站点 A
进行经过身份验证和授权的 API 调用
- 用户已经登录到 站点 A 不必再次输入凭据
此外,一个奇怪的要求是我们不能仅根据其域名“信任”站点 B(网络应用程序在第 3 方服务上运行容器化,生成应用程序的域是随机的——但如果需要,我们可以将秘密存储在容器上)。
我查看了 OAuth2,但似乎需要在身份验证服务器 (站点 A)。不幸的是,应用程序的域是在每个用户的基础上动态生成的,因此无法提前知道要提供的 URI(除非我构建一些奇特的解决方法,应用程序容器在启动时向身份验证服务器“注册”自身) .
我想推出我自己的基于令牌的身份验证系统,但是,如果已经有这样做的标准,我不想重新发明轮子。有什么东西可以满足这些要求吗?
在查看我的选项后,我决定使用类似于 django-simple-sso 的自定义身份验证流程。身份验证方案是 non-standard AFAIK,但它处理我的用例。
如果有人好奇,身份验证流程如下:
- 在 站点 A 上创建了代表 站点 B 的“客户端应用程序”,具有
client_id
和 secret
- 站点 B 发出 back-end API 请求“请求令牌”,以及包含
client_id
和 client_secret
.
- 此“请求令牌”允许 站点 B 将用户发送到 站点 A 上的
/sso/auth
,以及一个 next
参数。 如果没有有效的请求令牌,站点 A 将不会重定向。
/sso/auth
页面需要用户 session-based 身份验证。一旦通过身份验证,用户将被重定向到 next
参数,并在查询字符串中添加 token
。此时请求令牌也被删除。
- 此身份验证令牌现在可以在
Authorize
header 中用于 API 调用。
我正在寻找满足以下要求的 SSO 解决方案:
- 用户帐户存储在 站点 A(运行 在 Django 上)
- 站点 A 还提供 API
- 站点 B 需要对 站点 A 进行经过身份验证和授权的 API 调用
- 用户已经登录到 站点 A 不必再次输入凭据
此外,一个奇怪的要求是我们不能仅根据其域名“信任”站点 B(网络应用程序在第 3 方服务上运行容器化,生成应用程序的域是随机的——但如果需要,我们可以将秘密存储在容器上)。
我查看了 OAuth2,但似乎需要在身份验证服务器 (站点 A)。不幸的是,应用程序的域是在每个用户的基础上动态生成的,因此无法提前知道要提供的 URI(除非我构建一些奇特的解决方法,应用程序容器在启动时向身份验证服务器“注册”自身) .
我想推出我自己的基于令牌的身份验证系统,但是,如果已经有这样做的标准,我不想重新发明轮子。有什么东西可以满足这些要求吗?
在查看我的选项后,我决定使用类似于 django-simple-sso 的自定义身份验证流程。身份验证方案是 non-standard AFAIK,但它处理我的用例。
如果有人好奇,身份验证流程如下:
- 在 站点 A 上创建了代表 站点 B 的“客户端应用程序”,具有
client_id
和secret
- 站点 B 发出 back-end API 请求“请求令牌”,以及包含
client_id
和client_secret
. - 此“请求令牌”允许 站点 B 将用户发送到 站点 A 上的
/sso/auth
,以及一个next
参数。 如果没有有效的请求令牌,站点 A 将不会重定向。 /sso/auth
页面需要用户 session-based 身份验证。一旦通过身份验证,用户将被重定向到next
参数,并在查询字符串中添加token
。此时请求令牌也被删除。- 此身份验证令牌现在可以在
Authorize
header 中用于 API 调用。