使用授权服务器进行 REST API 到 API 身份验证
REST API to API authentication with Authorization Server
我基本上有 3 种类型的应用程序,首先我有一个授权服务器 (AuthServer)、一个资源服务器 (ResServer1) 和一个网站。所以基本上所有从网站到 ResServer1 的调用都使用 Bearer Token 到 AuthServer 进行身份验证,它也在请求中传递 header。 AuthServer 基于 ResourceOwner 的授权类型,这意味着用户为了访问受保护的方法,需要使用用户名密码进行身份验证
我现在遇到的问题是我需要引入一个新的资源服务器 (ResServer2),它将调用 ResServer1 中的资源。问题是从系统到系统调用的身份验证,因为 ResServer2 服务不是用户。验证其他服务的最佳方式是什么?
在这种情况下,存在 client_credentials
授权类型,您的 ResServer2 将成为消费者和资源。因此,推荐的方法是像那样设置它,但在那种情况下,您的 ResServer2 将没有任何用户上下文。
我遇到过类似的情况,我们有很多遗留代码取决于用户上下文,并且将整个授权机制更改为基于策略不是一个选项,我并不是说这种方法很好,但我们基本上设置在我们的网站上请求 ResServer1 和 ResServer2 的范围,然后一旦用户登录,然后前端从 ResServer1 请求受保护的数据,只要 ResServer1 需要从 ResServer2 请求受保护的数据,它就会重用传递的相同承载令牌在 WebApp 的原始请求中。
我基本上有 3 种类型的应用程序,首先我有一个授权服务器 (AuthServer)、一个资源服务器 (ResServer1) 和一个网站。所以基本上所有从网站到 ResServer1 的调用都使用 Bearer Token 到 AuthServer 进行身份验证,它也在请求中传递 header。 AuthServer 基于 ResourceOwner 的授权类型,这意味着用户为了访问受保护的方法,需要使用用户名密码进行身份验证
我现在遇到的问题是我需要引入一个新的资源服务器 (ResServer2),它将调用 ResServer1 中的资源。问题是从系统到系统调用的身份验证,因为 ResServer2 服务不是用户。验证其他服务的最佳方式是什么?
在这种情况下,存在 client_credentials
授权类型,您的 ResServer2 将成为消费者和资源。因此,推荐的方法是像那样设置它,但在那种情况下,您的 ResServer2 将没有任何用户上下文。
我遇到过类似的情况,我们有很多遗留代码取决于用户上下文,并且将整个授权机制更改为基于策略不是一个选项,我并不是说这种方法很好,但我们基本上设置在我们的网站上请求 ResServer1 和 ResServer2 的范围,然后一旦用户登录,然后前端从 ResServer1 请求受保护的数据,只要 ResServer1 需要从 ResServer2 请求受保护的数据,它就会重用传递的相同承载令牌在 WebApp 的原始请求中。