我将使用许多资源服务器(以不同的编程语言实现)和一个授权服务器来创建REST Web服务。
我的问题是资源服务器中的令牌验证。假设资源服务器无法连接到数据库并检查其中的令牌信息。
我已阅读此主题:OAuth v2 communication between authentication and resource server
我喜欢在授权服务器中创建API的想法,授权服务器负责“解析”令牌。例如:https://oauth.example.tdl/tokeninfo?token=tokentovalidate
所以我的问题:/ tokeninfo资源应该是“公共的”吗?我的意思是每个知道这个端点的人都能够验证令牌..
让这个“私人”不是更好吗?我的意思是https://oauth.example.tdl/tokeninfo?access_token=valid_token&token=tokentovalidate
但是我的资源服务器必须在验证令牌之前对其进行授权..我认为请求太多了。
如果您了解更多策略来验证资源服务器和授权服务器之间的令牌 - 请告诉我,因为我对OAuth很新。
答案 0 :(得分:2)
令牌验证API应该公开吗?
在身份验证方面,如果当然应该是经过身份验证的API,并且您用来调用它的访问令牌是您要验证的访问令牌。 RFC 6750解释了如何做到这一点。通常,令牌在Authorization
标头中发送,或作为Uri查询参数发送。
或者,为了更加安全,您需要客户端ID和客户端密钥来保护呼叫,方法是将它们作为参数传递,方法是使用客户端凭据授予为客户端获取访问令牌。
请注意从API返回的信息。您只应返回不需要资源所有者授权的特定范围的信息。
有关现实生活的示例,请参阅Google implementation或the implementation from The Identity Hub.有关Facebook的实施,请参阅Manually Build a Login Flow上的“确认身份”部分。