php - Oauth - 默认登录 token 应赋予什么类型的权限?

标签 php python rest oauth oauth-2.0

我正在为我正在制作的网络应用程序开发一个身份验证系统。我想允许其他应用程序连接到我的应用程序中存储的数据(使用 OAuth 系统)。

我一直在阅读有关 OAuth 如何工作的文章:https://www.oauth.com/oauth2-servers/background/

大部分内容都有道理,但我确实有一个问题:

如何让用户不必授予对我自己的移动应用程序的访问权限?

换句话来说,如何让服务器自动向我的移动应用程序授予某些权限? 我假设其中一部分涉及为这些应用程序创建客户端 ID 和客户端 key ,就像其他应用程序一样,但我如何才能安全地绕过这些应用程序的授权?

我不确定我这样做是否正确,因为在我的 API 中,我有一个 signIn 端点,它接受用户名和密码并返回身份验证 token 。

我是否应该不使用 signIn 端点,而只使用一个 token 验证器,在 token 无效时将其移交给 OAuth 系统?

我知道这有很多问题,但我想解决这个问题,因为身份验证系统对安全性非常重要。

最佳答案

关于移动客户端的第一个问题,有 OAuth2 for Native Apps RFC其中讨论了该主题。简而言之,您应该使用 PKCE 的授权代码授予并刷新 token ,因此您的移动应用程序只需请求授权一次。为此,您的移动应用需要注册 OAuth2 客户端,并且 token 端点应配置为不需要 secret (因为您无法在移动应用中保守 secret )。

对于第二部分,OAuth2 协议(protocol)的好处之一是只有身份验证服务器才能获取用户凭据,而不是应用程序。它使凭证更难被泄露,并允许用户仅委派某些权限(范围)。因此,最好坚持一些基本的 OAuth2 流程(身份验证代码、隐式、混合),而不是使用您自己的端点进行身份验证。它将使您的应用程序更安全,甚至更容易使用(如果您使用类似 SSO 的东西)。

关于php - Oauth - 默认登录 token 应赋予什么类型的权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53947162/

相关文章:

php - 使用 PUT 上传 yii2 REST Api 文件

php - SimplePie: fatal error :调用非对象上的成员函数 set_cache_location()

php - 如何在mysql中上传并显示图片

php - mysql 中的日期格式?

php - Laravel 4 迁移 :rollback with --path on artisan CLI

python - sympy 解析器未将 expm1 识别为符号函数

python - 使用 fancyimpute 和 pandas 进行数据插补

python - 如何用python计算r平方?

java - Spring MVC Web 服务 GET (Rest) 调用 : 404

javascript - Dynamics crm 2016 - Web API 查询 - 动态值