我有一个与 OAuth 2 的工作方式更相关的问题,但由于使用 IdentityServer 来实现 OAuth,我认为这是相关的。我在任何地方都找不到答案。
我正在构建一个网站和一个使用我自己的 API 的移动应用程序。我的应用程序的每个用户都有一个用户名和密码,这将使他能够访问应用程序/网站,并通过 API 访问他的信息。
我不确定处理用户登录流程的正确方法:
编辑
澄清一下,因为我发现很多讲座和文章从 API 消费者(即第三方开发者)的角度解释了这个过程:我是 API 所有者和身份验证服务器所有者,我是所有者的用户帐户(他们是我的服务的用户),我也是我自己的消费者(通过网站和移动应用程序),并且在 future 我希望让第三方开发人员允许我的用户登录他们对我的服务的帐户(有点像 Facebook 或 Google)
最佳答案
你是对的,你不应该存储 client_secret
在您的应用程序中,但我怀疑您是否会绕过存储 client_id
.您也可以为您的应用禁用同意屏幕,并构建 native 登录 View 。您需要存储 access_token
和 refresh_token
如果您不希望用户每次使用您的应用程序时都登录,请在设备上(可能在数据库中加密)。
对于问题 4,您可以执行以下操作:
client_secret
在您的(网络)应用程序中 session_secret
使用 hash(ip_address + session_salt)
session_secret
和 client_secret
用于 API 调用 hash
和 client_secret
完全阻止某人使用您的 API 几乎是不可能的。但是你应该添加各种限速方法,比如限制IP地址、API调用等。但是没有什么可以阻止有人反编译你的应用程序并访问你的
client_id
.
关于authentication - 将 OAuth 用于使用我自己的 API 的移动设备和网站的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43689218/