使用哪种授权类型来验证第三方客户端的 API 访问权限?

Posted

技术标签:

【中文标题】使用哪种授权类型来验证第三方客户端的 API 访问权限?【英文标题】:Which grant type to use to authenticate third party client for API access? 【发布时间】:2019-05-17 13:58:02 【问题描述】:

我是第一次构建第三方 API。我有一个使用护照进行身份验证的 laravel 应用程序。我正在构建一些 API 来向其他合作伙伴提供我的内容。我一直在研究在这种情况下使用哪种授权类型。

我首先想到的是客户凭证授予。但是没有与此授权类型关联的用户,这将难以保持 API 访问跟踪(生成客户端明智的 API 访问报告),并且不提供刷新令牌。

其次是密码授予类型。此方法有用户并且还提供刷新令牌。但我不确定这是否正确。

谁能建议在这种情况下使用哪种授权类型?任何帮助将不胜感激。谢谢

【问题讨论】:

如果您只是令牌的消费者,为什么还要考虑授权类型?如果您正在构建 API,您应该获取访问令牌、验证它(有效性、范围)并执行操作或拒绝它。 如果您正在寻找一种将最终用户与客户端相关联的方法,您是否考虑过使用 OpenID Connect?它可能会使用授权代码或隐式流程,具体取决于您的架构外观。 @rj2700 我不需要将最终用户连接到客户端。只有我和客户。我将我的策划内容提供给客户。 @JánHalaša 对,我想我应该放弃使用 laravel 护照的想法。 【参考方案1】:

对于您的情况,您可以使用personal access token method。个人访问令牌是一个长期存在的令牌,您无法撤销或刷新令牌,但您可以调整其过期时间。

【讨论】:

这也是一个不错的选择。但我转向了简单的 JWT-Auth,因为我认为在这种情况下不需要 OAuth2。 我不确定 JWT-Auth 但个人访问令牌已准备好用于基于服务的解决方案。

以上是关于使用哪种授权类型来验证第三方客户端的 API 访问权限?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 2.0 中的 Windows 身份验证

使用 Passport 授权时为 API 测试设置 Postman

使用 Laravel 验证第三方 JWT

容器安全之启用docker客户端命令的授权

何时将刷新令牌传递给 API

ASP.NET Web API 授权和身份验证