流程如下:
>用户可以通过网络应用程序注册和登录:https://www.domain.com
>用户安装手机应用程序,他们可以使用手机应用程序登录和注册.登录,注册和数据访问是通过api端点完成的:示例:https://www.domain.com/api/service/getsomedata
如何配置Openiddict OAuth,以便使用OAuth保护API端点?
解决方法
How can I configure Openiddict OAuth so I can protect the API endpoints using OAuth?
您的场景听起来像是the simple “resource owner password credentials” grant的一个很好的候选者,它基本上是OAuth2等同于基本或表单身份验证.
这是我建议的:
创建一个新的AccountController / RegistrationController API控制器,负责创建新帐户:
由于此阶段不存在用户帐户,因此您无法在此处使用令牌身份验证(就像默认的AccountController.Register模板在注册用户之前不需要cookie身份验证一样).
配置OpenIddict以启用令牌端点并允许资源所有者密码凭据授予:
services.AddOpenIddict<ApplicationDbContext>() // Disable the HTTPS requirement during development. .DisableHttpsRequirement() // Enable the token endpoint,required to use // the resource owner password credentials grant. .EnableTokenEndpoint("/connect/token") // Enable the password and the refresh token flows. .AllowPasswordFlow() .AllowRefreshTokenFlow();
使用OAuth2验证中间件来保护您的API:
要启用令牌身份验证,请参阅AspNet.Security.OAuth.Validation 1.0.0-alpha2-final包并在app.UseMvc()之前添加app.USEOAuthValidation().要使身份验证成为必需,只需使用[Authorize]属性,就像使用Cookie身份验证一样.
不要犹豫与this sample一起玩.它不会在客户端部分使用移动应用程序,但您应该很容易理解它是如何工作的.
有关更多信息,您还可以阅读此博客文章,由Mike Rousos撰写,用于Microsoft .NET Web开发和工具博客:Bearer Token Authentication in ASP.NET Core