我在设置Oath2服务器时相当新,并且希望有人可以帮助我了解一些事情。
这是我正在实施的软件包:
https://github.com/lucadegasperi/oauth2-server-laravel
根据我对此软件包的了解,我非常确定密码' /'资源所有者' grant_type是我应该用来设置移动应用程序的API访问,就像移动银行应用程序(敏感数据)一样
引用OAuth2规范:
http://tools.ietf.org/html/rfc6749#section-4.3
OAth2规范规定客户端必须已经过身份验证,因此必须传递5个参数才能被授予访问令牌:
- grant_type('密码')
- 用户名
- 密码
- client_id
- client_secret
我对此有两个问题:
最终,我试图找出在“oath_clients”中获取记录的最佳做法。表格以及每个设备的条目是否应该是唯一的。
谢谢你的帮助!
答案 0 :(得分:7)
是否所有设备都应该共享同一对client_id和client_secret,或者每个设备是否应该有一对不同的client_id和client_secret由您自己决定。从OAuth 2.0的角度来看,它们之间没有区别,因为OAuth 2.0并不关心每个应用程序实例如何获得一对client_id和client_secret。你可以
如果您想为每个设备分配一对不同的client_id和client_secret,那么流程将如下所示。
如果要通过client_id标识设备,则需要将每个client_id与每个设备关联。但是,如果您只是想知道哪个设备正在访问受保护的资源,那么可能需要“device_id”#39;客户端应用程序访问受保护资源的端点时的参数或类似内容。具体来说:
GET /protected_resource?access_token=.....&device_id=.....
最后,关于你的第一个问题。 OAuth 2.0认为本机应用程序不能保密客户端凭据。以下摘录自" 9. Native Applications"。
使用授权代码授予类型的本机应用程序 由于本土的原因,应该在不使用客户凭证的情况下这样做 应用程序无法保密客户凭证。