asp.net-web-api – 带有OWIN OAuth承载令牌的Web Api 2
我正在使用Visual Studio 2013构建web api,并希望使用OWIN中间件和持有者令牌进行身份验证.但是我已经有了一个数据库,并且不想使用Microsoft的新Identity框架作为它自动生成的大多数表和列,我根本不需要.
任何人都可以指出我如何应用此类身份验证的正确方向,而无需使用Microsoft身份框架? 解决方法
我的建议是使用框架,但扩展它以使用您的对象和基础结构.我目前正在做这件事并着手解决这个问题.到目前为止,我已经解决了这个问题:
第1步:您自己的CustomUserObject 编写/使用您自己的“ApplicationUser”对象.在模板项目中,您要修改“IdentityModels”文件.它具有在那里定义的ApplicationUser对象.假设您已经拥有现有应用程序的所有属性,则需要添加GenerateUserIdentityAsync()方法,但将参数类型更改为UserManager manager.更改后,您的方法签名如下所示: public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<CustomUserObject> manager) 第2步:定义自己的IUserStore<>履行 添加一个实现IUserStore的新类CustomUserStore,如下所示: public class CustomUserStore : IUserStore<CustomUserObject> { private readonly IUserManagerService _userManagerService; public CustomUserStore(IUserManagerService userManagerService) { _userManagerService = userManagerService } //implementation code for all of the IUserStore methods here using //userManagerService or your existing services/classes } 我正在使用Unity注入上面的IUserManagementService实现. 我已经使用了Microsoft Identity框架附带的综合UserManager类,但扩展了框架以使用我的API进行身份验证和授权.您可以编写自己的UserManager,但我发现它非常繁琐,并且没有理由说UserManager可以用于大多数保护应用程序的情况. 第3步:IdentityConfig.cs文件中的更改 更改类定义以使ApplicationUserManager类继承自UserManager 你还需要在这个类的构造函数中做同样的事情;即拥有IUserStore.修改Create static方法的第一行以使用新存储和一个包装类,它提供了一个“DbContext”的方法,如下所示: public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options,IOwinContext context) { var manager = new ApplicationUserManager(new ApplicationUserStore(context.Get<UserManagementServiceWrapper>())); //modify the relevant lines after this to suit your needs ... } 我的UserManagementServiceWrapper看起来像这样(请注意,我不太高兴它继承自具体的UserManagementService类,该类提供连接到提供用户数据的服务的方法,我仍在构建它): public class UserManagementServiceWrapper : UserManagementService,IDisposable { public void Dispose() { throw new NotImplementedException(); } } 步骤4:更改ApplicationDbContext类以返回UserManagementServiceWrapper实例 public class ApplicationDbContext : UserManagementServiceWrapper { public static UserManagementServiceWrapper Create() { return new UserManagementServiceWrapper(); } } 这就是它.您仍然必须编写CustomUserStore对象的实现,但一切都应该工作. 请注意,这不是样板代码,并且没有“代码审查准备就绪”附近,正如我所说的,我仍然在深入研究这个问题并将其构建成使用自定义商店,数据访问对象,服务等.我以为你会从我花了几个小时才能弄明白的一些事情开始.当我有一个很好的解决方案时,我会在博客上写这个. 希望这可以帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 将Always Encrypted Certificate放在IIS 7.5 We
- asp.net – 如何使Identity.GetUserId()返回Guid而不是字符
- asp.net-mvc-3 – 错误:在登录时未找到视图’xx’或其主服
- 使用RCurl getURL函数访问ASP网页时出现“Object Moved”错
- asp-classic – 为ServerXMLHTTP请求设置超时
- 在ASP.NET中模拟成员资格用户
- 如何最小化ASP.NET C#项目DLL大小?
- 将异常传递到ASP.net/C#中的错误屏幕
- asp.net-mvc-4 – 使用WebAPI进行搜索
- 使用asp.net中的web api通过http进行身份验证
- asp.net-mvc – ASP.NET MVC – 控制器测试的模拟
- asp.net-mvc – 在Umbraco 7中建立联系表格
- asp.net – 在打开和打印多个记录时强制HTML / A
- asp.net-web-api – Web API帮助页面上的资源描述
- ASP.net RequiredFieldValidator不阻止回发
- DxPackNet 5.视频高质量的压缩和传输
- asp.net-mvc – ASP.NET MVC Preview 5 – Html.
- asp.net – 在内联.aspx页面中导入错误
- asp.net – 无Cookie属性web.config
- asp.net-core – Razor模板中的特殊字符未正确编