繁体   English   中英

Oauth2通过电子邮件/密码访问API

[英]Oauth2 access to API by email/password

我使用gem'rack-oauth2-server'。 目前,我需要通过电子邮件/密码从移动应用程序添加对API的访问权限。

关于问题:Gem提供来自'oauth / access_token'端点的访问令牌。 这需要下一个参数:“电子邮件”,“密码”,“ client_id”,“秘密”。 'client_id'和'secret'-mongodb集合中的oauth客户端字段。 客户端已设置范围访问。 我的用户类型很少。 对于每种用户类型,应具有不同的访问范围(不同的oauth客户端)。

因此,出现了一个问题:我想允许任何用户类型从移动应用访问api,但是在登录之前,我不知道哪种类型的用户。 因此,移动应用无法知道应将哪个client_id和sercret传递给“ oauth / access_token”请求。

也许存在一些关于Rails请求的预钩,或者用于在飞行中(服务器端)向请求添加参数的另一种方法? 注意:不能使用before_filter,因为'rack-oauth2-server'在回调之前被调用。

PS对不起,我的英语不好。

也许存在一些关于Rails请求的预钩,或者用于在飞行中(服务器端)向请求添加参数的另一种方法? 注意:不能使用before_filter,因为'rack-oauth2-server'在回调之前被调用。

Rails应用程序是Rack中间件的堆栈。 因此,您可以编写一个新的标识和标识/添加/设置/更新所需的请求变量。 上面的链接说明了概念以及如何添加/管理自定义中间件。

因此,出现了一个问题:我想允许任何用户类型从移动应用访问api,但是在登录之前,我不知道哪种类型的用户。 因此, 移动应用无法知道应将哪个client_id和sercret传递给“ oauth / access_token”请求。

话虽如此,您似乎在oAuth上下文中混淆了client_id的含义。 客户端是已注册并连接到您的oAuth终结点的应用程序(对于您而言是移动应用程序)。 因此,同一个移动应用程序(理想情况下)不应使用不同的client_id连接。 只需使用其他表格或下拉菜单,您的用户就可以选择他们要登录的方式并设置适当的scope参数。

PS。 由于您使用的是“ Client Credentials授予类型,因此请确保使用的是安全连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM