我正在Web API 2项目中使用ASP.NET Identity。我目前已经安装并运行良好,可以使用以下示例使用用户名和密码进行身份验证:
grant_type=password&username=alice%40example.com&password=Password1!
这一切都很顺利。
现在,我的服务可以从移动应用程序调用,我想让用户可以选择使用密码登录。我在用户表中添加了两个额外的字段(密码和设备id),并扩展了UserStore,以便能够根据这些信息检索用户。
我的问题是如何允许用户提供密码?我需要他们能够使用密码或密码登录,所以我想发送以下密码:
grant_type=passcode&username=alice%40example.com&passcode=1234&deviceid=abcdef
并且根据grant_ type,我可以通过密码或密码来查询用户商店。然而,这会引发一个错误(unsupported_grant_type
),经过快速搜索,这些值似乎是预定义的值,所以我不能添加新值?
我可以添加一个新的grant_type
吗?还是必须坚持使用password
,并在帖子数据中添加一个额外的字段,说明它是否是密码?
感谢
grant_type
似乎不是什么大问题。但也有:合规性。每个OAuth端点都有一组特定的允许的grant_type
s。如果你添加另一个,你实际上绕过了标准,这将导致其他实现它的人出现问题。