首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用自定义用户数据库的Web令牌身份验证

使用自定义用户数据库的Web令牌身份验证
EN

Stack Overflow用户
提问于 2014-06-18 23:32:30
回答 5查看 46.8K关注 0票数 64

我正在开发一个WebAPI2.1服务,它需要对连接客户端(我将创建和控制的HTML5 5/JS客户端)进行身份验证。不幸的是,用户信息(用户名、密码哈希、角色和更多更多的信息)存储在我只能读取访问的现有( Server)数据库中。用户数据库表创建于5-6年前,没有任何安全框架的引用,因此它是一种完全自定义的格式。我不允许对数据或数据库结构进行任何更改。

这篇文章的启发,我推出了自己的基于令牌的用户身份验证方法,但我缺乏使用已建立的安全框架的完整性和(重新)安全性。

考虑到我前面提到的限制,是否有一种方法可以在我当前的项目中集成一个现有的框架,例如OAuth2?我不知道这是否有什么区别,但我正在使用OWIN进行自我托管。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 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

票数 19
EN

Stack Overflow用户

发布于 2014-06-19 20:56:41

另一个有能力的人可以解释这些选择。但是,如果以服务身份验证是一种选择,那么请查看Auth0 @ https://auth0.com

我使用HTML/JS和本机Windows应用程序,针对简单的Server表和AD测试了该服务(作为Azure插件)。很有魅力,几乎零头痛。

票数 2
EN

Stack Overflow用户

发布于 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/在这里很有帮助地描述了这个解决方案

需要注意的关键是以下代码:

代码语言:javascript
运行
复制
//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很棒,但是当我已经使用了一些不同结构的遗留数据库时,我对数据库的代码第一次实现感到恼火。希望这会有所帮助。我对这个结果相当满意(经过几天的努力使它开始工作)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24296613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档