【发布时间】:2016-09-01 22:14:07
【问题描述】:
我有一个配置为使用 ASP.NET 标识的 MVC 应用程序。更具体地说,我已将应用程序配置为使用 OAuth。一切都按原样完美运行。我可以将用户名/密码传递给我的令牌端点并接收一个令牌作为回报。我已经配置了刷新令牌,我剥离了默认声明并添加了我自己的、实现的授权属性等。
我有一个基于非用户名/密码组合生成令牌的新要求。这种组合在高层次上类似于用户名/密码:用户传递了两条关于他们自己的信息,如果为真,则返回一个 JWT(就像使用用户名/密码一样)。
假设我有一个 Person 和 AspNetUser 表。一些个人记录将是 AspNetUser,但不是全部。那些不想使用我上面描述的方法进行身份验证的人。我想,从技术上讲,它们可以是 AspNetUser 记录,但没有配置密码和可能的电子邮件。
我很难找到合适的解决方案来解决这个问题。我是否创建一个自定义端点来获取此替代身份验证凭据并返回承载令牌?如果是这样,关于利用 .NET Identity 返回令牌的正确方法有什么建议吗?我是否要修改我的自定义 OAuthAuthorizationServerProvider 以考虑这种替代方法?如果是这样,关于创建要返回给客户端的“假”(即用户不存在于 AspNet* 表中)身份的任何建议?
一如既往,感谢您的帮助。
谢谢!
【问题讨论】:
-
为什么不把这两条数据当作用户名和密码呢?或者将它们组合起来作为密码,使用单独的用户名。
-
两种登录方式:用户名/密码(存储在 .NET 身份提供者中)和 [示例,非实际实现] 名字/姓氏(存储在 Person 表中)。我不是特别喜欢发送诸如 grant_type=password&username=[firstName]&password=[lastName] 之类的请求。我觉得这有点hacky。如果(再次,例如)名字/姓氏有效,我已经到了进行评估的地步,然后继续。仍然不确定这是最好/首选的做事方式。在我键入此内容时,正在努力创建正确的 Auth Ticket。
-
你的问题解决了吗,@mtm927?
-
是的 - 我最终创建了一个代表 OAuth 响应的自定义类。假设备用凭据有效,我将手动创建一个 AuthenticationTicket,设置超时,然后使用 ApplicationJwtFormat 类来保护票证。这给了我正在寻找的访问令牌。
-
@mtm927 你能分享你对这个问题的解决方案吗?
标签: c# asp.net asp.net-identity