我正在创建一个原生Android应用,目前使用Firebase Auth处理用户身份验证。我在PHP站点后面有一个MySQL数据库,我正在构建一个RESTful API来访问这些服务。我希望获得授权的用户能够访问有限的功能和数据。
在这种情况下,处理后端服务器权限的方法是什么?我是OAuth等Auth技术的新手,但我觉得这可能是这个解决方案的一部分,所以请随意跟我说话,就像我是个白痴。 :)
[编辑] 我的后端拥有与Facebook类似的权限;例如,内容可以显示为私人,朋友或公共。
此致
答案 0 :(得分:1)
这取决于您的安全设计。
最简单的方法是使用基于角色的安全性 - 仅使用OAuth2 / OpenID Connect进行身份验证(请求ID令牌,而不是访问令牌)。然后,您必须获取经过身份验证的用户的角色列表。角色可以是ID令牌的一部分,或者API服务器可以从其他源(例如其数据库)获取它们。如果角色检索是一项昂贵的操作,您可以考虑发布包含您需要的所有信息的自己的令牌(JWT)。
如果您只想将某些用户的权限委托给移动应用,则可以将API范围(权限)注册到OAuth2服务器,该应用可以向用户询问其中的一部分。例如,如果您的应用程序想要代表其用户访问Google服务,则应用程序会要求提供具有特定范围的访问令牌(例如,阅读GMail收件箱)。但这可能不是你想要的。
编辑: 如果您处理的对象具有自己定义的访问权限(私有,公共,朋友可见),那么只需从OAuth2服务器获取用户身份(ID令牌),并在有人通过您的API请求此类对象时检查权限。 OAuth2本身无法帮助您。
对于您的Android应用,请按照OAuth2 for native apps RFC中的说明使用授权码授予流。