使用Openiddict的ASP.NET Core 1.0 OAuth服务器

use*_*430 7 oauth asp.net-core-mvc asp.net-core asp.net-core-1.0 openiddict

我想使用Openiddict OAuth来保护我的ASP.NET Core 1.0 Web应用程序中的api端点.该api终端将通过手机应用程序被调用,用户必须输入用户名和密码登录.

流程如下:

  • 用户可以通过Web应用程序注册和登录: https://www.domain.com
  • 用户安装手机应用程序,他们可以使用手机应用程序登录和注册.登录,注册和数据访问通过api端点完成:示例:https://www.domain.com/api/service/getsomedata

如何配置Openiddict OAuth,以便使用OAuth保护API端点?

Kév*_*let 5

如何配置Openiddict OAuth,以便使用OAuth保护API端点?

您的方案听起来像是简单的"资源所有者密码凭据"授权的良好候选,它基本上是OAuth2等效的基本或表单身份验证.

这是我建议的:

创建一个负责创建新帐户的新AccountController/ RegistrationControllerAPI控制器:

由于此阶段不存在用户帐户,因此您无法在此处使用令牌身份验证(就像默认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();
Run Code Online (Sandbox Code Playgroud)

使用OAuth2验证中间件来保护您的API:

要启用令牌身份验证,请参考AspNet.Security.OAuth.Validation1.0.0-alpha2-final包并在app.UseOAuthValidation()之前添加app.UseMvc().要使身份验证成为必需,只需使用[Authorize]与cookie身份验证相同的属性即可.

不要犹豫,玩这个样本.它不会将移动应用程序用于客户端部分,但您应该很容易理解它是如何工作的.

有关更多信息,您还可以阅读此博客文章,由Mike Rousos撰写,用于Microsoft .NET Web开发和工具博客:ASP.NET核心中的承载令牌身份验证