【发布时间】:2018-05-09 16:42:34
【问题描述】:
我想要一个由这些具有不同角色的设备/程序组成的架构(它们都是分开的,这些角色都不能存在于同一个实例中):
- 客户
- 身份验证服务器
- AUTHORIZATION-SERVER(可以有多个)
- RESOURCE-SERVER(也有很多可能)
还有:
我不想使用用户必须导航到的任何网站。
根据我对 OAuth 和 Open ID Connect 的研究,我假设客户端可以从 AUTHENTICATION-SERVER 获得 ID_TOKEN(授权后),然后可以从 AUTHORIZATION-SERVER 向不同资源请求 ACCESS_TOKENS。
我猜我描述的方法允许在客户端窃取身份。
我找不到一种方法可以轻松地将 id 令牌从授权服务器获取到客户端(然后我可以使用它来对多个授权服务器进行身份验证)。我的客户是值得信赖的。无论如何,我想使用本机应用程序并在它们之间实现 open id 连接。
到目前为止,我不想使用任何网站,并且仍然需要能够与对用户和所有内容的声明关联进行安全通信。 OpenID Connect 及其可能的“流程”是否适用于此?是否有任何其他实现可以允许我描述的流程(或可能是 OpenID Connect 的派生)?
【问题讨论】:
-
你试过什么?你遇到了什么问题?
-
我试图以某种方式从身份验证服务器获取 id 令牌到客户端,但我找不到方法。我还读到有人说你不应该这样做。但我有一个客户端是受信任的场景,需要通过不同的授权服务器进行身份验证。
-
我希望它能够像这样工作:使用凭据获取 id 令牌(使用客户端和身份验证服务器)。然后:客户端使用 id 令牌向多个授权服务器进行身份验证。然后:客户端获取授权令牌并使用它们访问资源服务器上的资源。
-
我能找到的使用(非网站!)客户端的唯一示例只是直接使用凭据的 api-key 访问(如前两个身份服务器快速启动示例)
-
不推荐,但如果您真的不想使用浏览器(这有点反 OAuth/OIDC),那么您需要使用 ResourceOwnerPassword 授权类型。这不会返回一个 id_token,只是一个 access_token。
标签: identityserver4 openid-connect