OAuth 2.0 记住授权授予
OAuth 2.0 remember authorization grant
This example by Microsoft 描述了实现 OAuth 2.0 授权服务器。我正在实施 授权码授予 流程。下载的示例代码中,/authorize 端点每次登录时都会要求用户授予权限。由于用户希望在第一次登录时只授予一次权限,所以我应该坚持吗?我自己为每个用户或默认情况下对此提供 OAuth 支持?
这种情况下的最佳做法是什么?
提前致谢。
OAuth 2.0 规范本身并未提及有关此功能的任何内容。因此,如果您使用的授权服务器的实现没有该功能,您必须自己实现它。
要实现该功能,您需要为每个用户和客户端应用程序组合存储有关 "who (user) has granted what permissions (scopes) to whom (client application)" 的信息。此外,即使在为每个组合颁发的所有访问令牌都已过期之后,您可能仍希望保留这些信息,以避免再次询问用户。
如果我是你,我会向授权服务器添加一个内部 API。 API 将收到一个用户 ID 和一个客户端 ID,以及 return 用户过去授予客户端应用程序的范围列表。如果有这样的API,你在生成授权页面的时候就可以使用了
仅供参考:
"Granted Scopes API" of Authlete is an example. /api/client/granted_scopes/get API 接受 subject
和 clientId
请求参数和 return 如下所示的 JSON。
{
"serviceApiKey" : <Service API Key>,
"clientId" : <Client ID>,
"subject" : <User's Unique ID>,
"latestGrantedScopes" : <Scopes granted by the last authorization process>,
"mergedGrantedScopes" : <All the scopes granted so far>,
}
/api/client/granted_scopes/delete API 接受subject
和clientId
请求参数并删除已记住的记录。
请注意,Granted Scopes API 仅适用于专用的 Authlete 服务器。它不适用于共享 Authlete 服务器 (api.authlete.com)。这是因为如果 API 调用者不按需要调用 /api/client/granted_scopes/delete API,垃圾记录可能会累积,这样的垃圾记录会浪费共享存储空间。
This example by Microsoft 描述了实现 OAuth 2.0 授权服务器。我正在实施 授权码授予 流程。下载的示例代码中,/authorize 端点每次登录时都会要求用户授予权限。由于用户希望在第一次登录时只授予一次权限,所以我应该坚持吗?我自己为每个用户或默认情况下对此提供 OAuth 支持?
这种情况下的最佳做法是什么?
提前致谢。
OAuth 2.0 规范本身并未提及有关此功能的任何内容。因此,如果您使用的授权服务器的实现没有该功能,您必须自己实现它。
要实现该功能,您需要为每个用户和客户端应用程序组合存储有关 "who (user) has granted what permissions (scopes) to whom (client application)" 的信息。此外,即使在为每个组合颁发的所有访问令牌都已过期之后,您可能仍希望保留这些信息,以避免再次询问用户。
如果我是你,我会向授权服务器添加一个内部 API。 API 将收到一个用户 ID 和一个客户端 ID,以及 return 用户过去授予客户端应用程序的范围列表。如果有这样的API,你在生成授权页面的时候就可以使用了
仅供参考:
"Granted Scopes API" of Authlete is an example. /api/client/granted_scopes/get API 接受 subject
和 clientId
请求参数和 return 如下所示的 JSON。
{
"serviceApiKey" : <Service API Key>,
"clientId" : <Client ID>,
"subject" : <User's Unique ID>,
"latestGrantedScopes" : <Scopes granted by the last authorization process>,
"mergedGrantedScopes" : <All the scopes granted so far>,
}
/api/client/granted_scopes/delete API 接受subject
和clientId
请求参数并删除已记住的记录。
请注意,Granted Scopes API 仅适用于专用的 Authlete 服务器。它不适用于共享 Authlete 服务器 (api.authlete.com)。这是因为如果 API 调用者不按需要调用 /api/client/granted_scopes/delete API,垃圾记录可能会累积,这样的垃圾记录会浪费共享存储空间。