从OpenID的角度和我所读过的所有问题/文章来看,这似乎是不言自明的--它是请求ID令牌的客户端应用程序。但是,当我试图在我们的体系结构中映射它为一个实际的“应用程序”时,我并不完全确定。
给予:
所涉及的组成部分如下:
如果我想在用户访问前端SPA时应用Auth代码流,前端SPA或Web_API会被视为Client_Application吗?在8月代码流中,Auth_Code与ID_Token的实际交换将发生在后端Web_API到OP的后端通道上。然而,它实际上是前端SPA最初要求的用户身份验证。ID_Token的受众应该是什么?是SPA的App_ID还是Web的App_ID?
感谢您对澄清的任何帮助。
发布于 2020-02-05 06:42:15
当前的最佳实践要求SPA在PKCE (最佳做法草案)中使用授权代码流。因此,请考虑这一点,当使用OAuth与您的SPA。
关于你的疑问,这是你的客户和听众。
理由:
完成OAuth流并获取令牌的是您的SPA。正如我所说的,它必须遵循PKCE作为当前的引用(有足够的库来支持这一点)。因此,从授权服务器的角度来看,客户端就是您的SPA。
关于ID令牌,它打算由您的SPA使用。一旦验证了SPA,就对最终用户进行身份验证。所以它的目标受众是SPA。
SPA打算对后端使用访问令牌。一旦接收到API请求,它必须检查访问令牌受众包含针对自己的标识符(如果是JWT,声明包含后端标识符Once )。或者,如果令牌内省,包含标识符的resposne )。通常,您的授权服务器允许您注册这样的用户,并且您的授权请求可以具有预期的受众参数(例如:- Azure使用这种方法)。但这些都是实现的具体细节。
https://stackoverflow.com/questions/60067152
复制相似问题