我正在开发一个WebAPI2.1服务,它需要对连接客户端(我将创建和控制的HTML5 5/JS客户端)进行身份验证。不幸的是,用户信息(用户名、密码哈希、角色和更多更多的信息)存储在我只能读取访问的现有( Server)数据库中。用户数据库表创建于5-6年前,没有任何安全框架的引用,因此它是一种完全自定义的格式。我不允许对数据或数据库结构进行任何更改。
受这篇文章的启发,我推出了自己的基于令牌的用户身份验证方法,但我缺乏使用已建立的安全框架的完整性和(重新)安全性。
考虑到我前面提到的限制,是否有一种方法可以在我当前的项目中集成一个现有的框架,例如OAuth2?我不知道这是否有什么区别,但我正在使用OWIN进行自我托管。
发布于 2015-02-15 13:38:59
这是对类似问题的一个很好的回答。它基本上是说:
IUser
的自定义用户类public class UserStoreService : IUserStore<CustomUser>, IUserPasswordStore<CustomUser>
的自定义用户存储区因为答案相当广泛,我只是提供了基本步骤..。详细信息在这里:如何在asp.net web 2中为我自己的一组表定制身份验证?
这也是一个非常有价值的内容,也适用于web api:
通过JumpStart定制带有身份的ASP.NET身份验证
https://channel9.msdn.com/Series/Customizing-ASPNET-Authentication-with-Identity
HTH
发布于 2014-06-19 20:56:41
另一个有能力的人可以解释这些选择。但是,如果以服务身份验证是一种选择,那么请查看Auth0 @ https://auth0.com
我使用HTML/JS和本机Windows应用程序,针对简单的Server表和AD测试了该服务(作为Azure插件)。很有魅力,几乎零头痛。
发布于 2015-07-16 21:51:35
在尝试在web中实现json令牌身份验证时,我偶然发现了我的解决方案。需要注意的是,我的解决方案通过Http请求的身份验证头(而不是通过cookie)发送json令牌,而不是使用Microsoft.Identity框架来处理身份验证。
无论如何,我基本上是以烹饪书的方式实现的-- Taiseer:http://bitoftech.net/2014/10/27/json-web-token-asp-net-web-api-2-jwt-owin-authorization-server/在这里很有帮助地描述了这个解决方案
需要注意的关键是以下代码:
//Dummy check here, you need to do your DB checks against memebrship system http://bit.ly/SPAAuthCode
if (context.UserName != context.Password)
{
context.SetError("invalid_grant", "The user name or password is incorrect");
//return;
return Task.FromResult<object>(null);
}
当然,您可以用您自己的方法替换上面的代码,以检查您(想必是预先存在的)用户数据库。一旦我实现了这一点,我就意识到您不需要使用Visual为您安装的新代码优先标识框架。
为了完成这项工作,我做了以下工作:
1)创建了一个空项目,并选择了更改身份验证/个人用户帐户。这将安装大多数必需的引用和文件,您需要开箱即用,以便通过cookie和代码优先标识框架文件使用令牌身份验证。 2)按照Taiseer Joudeh的领导编辑了这些文件。这需要一些新的对象,如CustomOAuthProvider.cs等。您需要通过自定义以下代码块来实现您自己的用户/密码检查:
if (context.UserName != context.Password) { context.SetError("invalid_grant", "The user name or password is incorrect"); //return; return Task.FromResult<object>(null); }
链接到Taiseer的说明:http://bitoftech.net/2014/10/27/json-web-token-asp-net-web-api-2-jwt-owin-authorization-server/ 3)修剪了我的外部文件项目(AccountBindingModels.cs、AccountViewModels.cs、IdentityModels.cs、ApplicationOAuthProvider.cs、identityConfig.cs、AccountBindingModels.cs、AccountViewModels.cs)。基本上,没有更多的microsoft身份引用。
我确信microsoft.identity很棒,但是当我已经使用了一些不同结构的遗留数据库时,我对数据库的代码第一次实现感到恼火。希望这会有所帮助。我对这个结果相当满意(经过几天的努力使它开始工作)。
https://stackoverflow.com/questions/24296613
复制相似问题