使用安全问题扩展 OWIN OAuth2.0 密码授予

Extending OWIN OAuth2.0 Password Grant With Security Questions

我目前在使用 OAuth2.0 密码授权的 WebApi2 应用程序中 OWIN/Katana 我想通过添加您将在银行网站上看到的安全问题来增加,例如"What is your mother's cousin's childhood dog's name?"

在典型的密码授予字段(用户、密码)中向用户提出额外问题的最有效方式是什么?

这是否需要实现我自己的中间件和选项以使用 IAppBuilder 进行集成,还是有更简单的方法?

在服务器端:从 IOAuthAuthorizationServerProvider.GrantResourceOwnerCredentials 通知中,您可以通过 OAuthGrantResourceOwnerCredentialsContext 访问整个 IOwinContext,因此,使用 [=从请求表单中提取任何自定义参数=14=].

在客户端:您必须使用 usernamepassword 参数传送安全问题答案。复杂性将直接取决于您的客户提供的挂钩。

POST /token HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=password&username=johndoe&password=A3ddj3w&answer=boblemagnifique