创建client_id并使用OAuth注册帐户

时间:2017-01-02 18:36:08

标签: oauth oauth-2.0 api-design

在授权用户使用第一方移动应用API时,我会发送以下请求:

localhost:5000/oauth/token?client_id=9qFbZD4udTgFVYo0u5U9kZX2iuzbdcJDRAquTfRk&grant_type=password&username=MyUsername&password=MyPassword

这个问题是我需要创建一个帐户以及一个可用的client_id。

我的问题是,当用户下载我的应用时,我应该如何向我的API发送请求以创建客户端记录(这需要用户创建,因为我有一个外键将客户端链接到用户的ID)和用户记录在我的数据库中,因为没有授权令牌?感谢。

3 个答案:

答案 0 :(得分:2)

嗯,您在此处使用password授权类型,这意味着用户了解并信任您的oauth服务器并将用户名/密码传递给它。另外一点是,client_id并不意味着每个用户都是唯一的,用户将使用它的应用程序ID,所以是的 - 在集成客户端应用程序和授权服务器时,它通常需要获取一次。

我相信你应该看看authorization_code授权类型。

答案 1 :(得分:0)

当任何客户端安装您的应用程序时,您可以让客户端首先注册到应用程序中。当客户端注册时,它将触发您必须在系统中创建客户端详细信息的API之一。客户端注册后,您可以允许他登录并继续进行令牌认证。

如果您的应用程序信任这些身份提供商,用户可以注册您的应用程序或使用第三方登录(如Facebook或Google)注册到系统中。

答案 2 :(得分:0)

通过阅读答案和评论,如果您还要为此实施自定义后端,如果您发送此内容会不会更好?

localhost:5000/oauth/token?client_id=9qFbZD4udTgFVYo0u5U9kZX2iuzbdcJDRAquTfRk

从这里开始,在你的后端,只需要一个存储此令牌的用户表,并检查是否有匹配的令牌。如果没有,则创建一个新的用户对象,并让用户填写相应的响应(电子邮件,密码等)以完成注册。

要解决spambot问题,要么有一个机器人验证程序,其中某些失败的尝试将踢出用户并删除临时用户obj或让后端向其收到的电子邮件地址发送验证电子邮件以确保该电子邮件是有效。

如果您想要/需要在您的网址中使用client_id + user +密码,无论您的问题是什么原因,您都可以进行多重检查

  1. client_id是新的或已经存在
  2. 用户名存在
  3. 从那里仍然将它们发送到注册页面并填写新用户(如果已被拍摄)或预先填写他们指定的用户和密码

    为了增加安全性,我建议您在发出请求之前加密用户的密码,否则可能会被数据包窥探者狙击