我已经实现了ASP.NET Identity 2.0.1,我对基于web的登录使用双因素身份验证,我对它的使用和整体安全性非常满意。
然而,对于通过WebAPI 2访问相同网站的基于移动的设备,我使用OAuth2承载令牌身份验证,当然不存在使用承载令牌的双因素身份验证这样的概念。
当人们想要在移动设备上实现与基于网络的登录相同的双因素安全级别时,建议采用什么方法?我是不是错过了什么?
我是这样做的
- 用户请求令牌(通过OAuthAuthorizationServerProvider)而不使用双因素代码-获取具有基本声明的访问令牌
- 用户使用此令牌通过在另一个控制器上发布来请求双因素代码。此控制器方法受索赔检查(检查基本索赔)保护
- 用户收到双因素代码
-
用户通过相同的令牌端点请求新的访问令牌(传递代码作为查询参数)。
http://localhost:12345/api/token?code=abc
body:{grant_type=password&username=username&password=password1}
-
在OAuthAuthorizationServerProvider中-您需要覆盖GrantResourceOwnerCredentials并检查双因素代码-如果存在代码并且用户信誉良好-颁发具有更高声明的新令牌,以允许访问其他资源。