我对C#Web API 2服务有以下要求:
该服务通过电子邮件和发送到其收件箱的临时密码的组合对用户进行身份验证,作为身份验证的一个因素 . 我需要将此身份验证机制与生成OAuth承载令牌相结合以保护服务,并使用标准ASP.NET授权机制通过某种[Authorize]属性检查针对令牌的每个请求 .
我已经成功实施了这些步骤
-
用户请求密码
-
系统生成并通过电子邮件将密码发送给用户,有效期为30天
-
用户使用电子邮件密码进行身份验证
-
系统检查密码的有效性
但我不知道如何开始实施其余步骤
-
如果密码有效,系统会生成OAuth承载令牌
-
OAuth承载令牌的持续时间与密码到期日期一样长
-
使用ASP.NET Identity授权属性执行身份验证和授权检查
-
使用OWIN Security和OAuth Middleware创建令牌
-
使用基于声明的授权并将声明序列化为令牌
引用的过程仅描述使用ASP.NET身份个人用户帐户作为验证方式,而不是我想要进行身份验证的方式 .
http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api
我实际上需要通过检查电子邮件和密码进行身份验证 .
2 回答
我在一个类似的场景中工作,并实现了一个身份验证过滤器(
IAuthenticationFilter
)和一个继承自OAuthAuthorizationServerProvider
的自定义类 . 就我而言,我需要使用OAuth和旧令牌对请求进行身份验证 . 我相信在你的情况下,你需要自定义AuthenticationFilter
. 请参阅下面的AuthenticationFilter
示例:在
WebApiConfig.cs
中,您需要添加如下身份验证过滤器:我建议阅读官方WEB API海报:
https://www.asp.net/media/4071077/aspnet-web-api-poster.pdf
有关如何在asp.net Web API中设置身份验证的详细说明,请参阅此post . 这应该可以让您了解如何在Web API中实现对您的需求的身份验证 . 如果您有任何问题或疑问,请与我们联系 .
谢谢你,Soma .