Oauth 2.0 无头桌面客户端web服务客户端应该是动态注册的OIDC客户端还是其他什么?
我的设置包括以下内容:Oauth 2.0 无头桌面客户端web服务客户端应该是动态注册的OIDC客户端还是其他什么?,oauth-2.0,identityserver4,openid-connect,Oauth 2.0,Identityserver4,Openid Connect,我的设置包括以下内容: 这是一个多租户系统,因此用户声明集包括tenant\u id,它唯一地标识用户所属的租户 基于IdentityServer4的web服务(提供OAuth2/OpenID连接服务):https://identity.example.com 一个单独的web服务(RESTfulWebAPI):https://random-number-generator-service.example.com 在许多位置的本地计算机上运行的无头程序(Windows服务):RandomNum
- 这是一个多租户系统,因此用户声明集包括
,它唯一地标识用户所属的租户tenant\u id
- 基于IdentityServer4的web服务(提供OAuth2/OpenID连接服务):
https://identity.example.com
- 一个单独的web服务(RESTfulWebAPI):
https://random-number-generator-service.example.com
- 在许多位置的本地计算机上运行的无头程序(Windows服务):
。此程序在RandomNumberConsumer.exe
的上下文中使用租户id
,因此用户需要在某个点进行身份验证,但除此之外,程序不关心用户的详细信息,只关心用户租户的详细信息随机数生成器服务
随机数生成器服务和随机数消费者.exe都是“客户端”
必须在IdentityServer中注册所有客户端软件(静态地作为客户机
对象实例的硬编码列表,或使用数据库存储客户机详细信息的某种动态注册。显然随机数生成器服务
将进行静态注册,但是RandomNumberConsumer.exe
应该如何注册
一些选择:
添加一个新的web应用程序,用户可以使用web浏览器登录并注册其RandomNumberConsumer.exe
安装(这将在identity.example.com
的客户端数据库中添加一个新的客户端
注册,并提供客户端密码)然后用户手动复制并粘贴客户端密码到RandomNumberConsumer.exe
的配置文件中。内部数据库将每个客户端注册映射到租户id
。这样做的优点是允许单个客户端访问撤销,但需要用户执行手动配置步骤,其中你不受欢迎
为RandomNumberConsumer.exe
注册一个客户端,不需要任何客户端密码,但客户端应用程序需要一个GUI组件,它可以使用该组件对用户进行身份验证,并将用户关联的访问令牌
和刷新令牌
存储在其本地配置中。这具有以下优点:更简单的用户体验(用户将打开一个randomnumerconsumerconfiguration.exe
程序,然后打开web浏览器访问身份验证页面,并使用带有临时localhost
或自定义uri方案值的redirect\u uri
获取数据)但这意味着当我们只希望实例与租户关联时,RandomNumberConsumer.exe
实例与单个人类用户关联
还有其他方法可以替代吗?客户端的每个实例都应该有自己的id。随机数生成器服务应该有一个id(即使在web场中运行)
RandomNumberConsumer.exe
安装在域外的不同计算机上,因此每次安装都应该有唯一的id
客户端与用户无关,因为缺少子声明。客户端包含子声明的唯一时间是它代表用户(并征得用户同意)行事的时间。这可能适用于随机数生成器服务
,但不适用于没有用户交互的RandomNumberConsumer.exe
(因为这是一项Windows服务)并且不需要用户的同意,因为用户请求安装时已给予同意
当您谈论Windows服务时,不可避免地要配置该服务。但是,您可以在安装程序中实施配置步骤。因此,不必构建UI或修改配置文件,您可以采取以下方法:
用户请求安装程序。批准后,将根据用户创建一个客户端并将其附加到租户(ClientClaims)
用户开始下载安装程序并收到id/密码(在屏幕上,通过电子邮件)
用户开始安装,在其中一个步骤中,用户必须输入id/密码。这是可以接受的,因为在安装软件时这是很常见的
这具有您想要的优势,并且只需用户执行最少的步骤
如果该服务具有更多配置选项,并且您希望为用户提供一个UI来维护这些选项,则向安装程序添加一个配置程序。这对于路由器和打印机来说非常常见。用户无需登录,因为它运行在本地(localhost网站)。您可以为浏览器添加一个链接作为快捷方式。由于RandomNumberConsumer.exe
安装与用户的租户帐户相关联,当没有身份或用户
时,我如何将索赔与客户端帐户相关联?只有用户才能拥有索赔-如果客户端成功通过random-number-s验证service
则服务无法知道客户端与哪个租户帐户关联。客户端也可以有声明。下载应该只对用户可用,因此必须保护页面以确保用户登录。从用户声明中,您可以读取租户id并将其作为声明添加到客户端。