如何在.net WebApi2应用程序的OAuth2令牌请求中使用额外的参数

nak5ive

我在大型.net MVC 5 Web解决方案中有一个api专用项目。我开箱即用地利用WebApi2模板通过api对用户进行身份验证。使用个人帐户进行身份验证,获得访问令牌所需的请求正文为:

grant_type=password&username={someuser}&password={somepassword}

这按预期工作。

但是,我需要在支架方法“ GrantResourceOwnerCredentials”中添加第三维。除了检查用户名/密码外,我还需要添加设备ID,这是为了限制从用户帐户对特定设备的访问。还不清楚如何将这些额外的请求参数添加到已经定义的“ OAuthGrantResourceOwnerCredentialsContext”中。该上下文当前为用户名和密码腾出了空间,但是显然我需要添加更多内容。

我的问题很简单,是否有一种标准方法可以扩展OWIN OAuth2令牌请求的登录要求,使其包含更多数据?而且,您将如何在.NET WebApi2环境中可靠地做到这一点?

nak5ive

通常,我在提交问题后立即找到了答案...

ApplicationOAuthProvider.cs包含以下现成的代码

public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
    using (UserManager<IdentityUser> userManager = _userManagerFactory())
    {
        IdentityUser user = await userManager.FindAsync(context.UserName, context.Password);

        if (user == null)
        {
            context.SetError("invalid_grant", "The user name or password is incorrect.");
            return;
        }

        ClaimsIdentity oAuthIdentity = await userManager.CreateIdentityAsync(user,
            context.Options.AuthenticationType);
        ClaimsIdentity cookiesIdentity = await userManager.CreateIdentityAsync(user,
            CookieAuthenticationDefaults.AuthenticationType);
        AuthenticationProperties properties = CreateProperties(context.UserName, data["udid"]);
        AuthenticationTicket ticket = new AuthenticationTicket(oAuthIdentity, properties);
        context.Validated(ticket);
        context.Request.Context.Authentication.SignIn(cookiesIdentity);
    }
}

通过简单地添加

var data = await context.Request.ReadFormAsync();

在方法中,您可以访问请求正文中的所有已发布变量,并根据需要使用它们。就我而言,我将它放在对用户进行null检查之后,以执行更严格的安全检查。

希望这对某人有帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将OAuth2身份验证令牌从MVC5 wep应用程序传递到WebAPI2应用程序

来自分类Dev

如何在ASP.NET Web应用程序中使用cloudinary url2png

来自分类Dev

如何在C#UWP应用程序中使用ASP.NET Core WebAPI?

来自分类Dev

如何为asp.net Web应用程序获取Google Api OAuth 2刷新令牌?

来自分类Dev

如何在应用程序后端使用OAuth 2.0实施Box.net v2授权过程?

来自分类Dev

如何在OAuth2中使用“刷新令牌”

来自分类Dev

如何在ASP .NET Web API 2应用程序中使用ng-file-upload保存文件?

来自分类Dev

如何在我的Web应用程序中使用AccountManager中的Google令牌?(使用omniauth-google-oauth2滚动)

来自分类Dev

如何在单个带有Spring Cloud Security Oauth2的Spring引导应用程序中使用多个Oauth2 SSO服务器?

来自分类Dev

我如何在思科注册我的应用程序以使用Cisco Oauth2?

来自分类Dev

如何在Windows应用程序中使用Log4net登录文件

来自分类Dev

如何在UnitTest中使用应用程序变量asp.net

来自分类Dev

如何在asp.net控制台应用程序中使用依赖项注入?

来自分类Dev

如何在.net标准库中使用应用程序见解?

来自分类Dev

如何在.net核心应用程序中使用Powershell启动Windows服务?

来自分类Dev

如何在Windows窗体应用程序(VB.NET)中使用UdpClient.BeginReceive

来自分类Dev

如何在asp.net应用程序中使用CSS和javascript菜单?

来自分类Dev

如何在外部asp.net应用程序中使用Dynamics AX Web服务

来自分类Dev

如何在ASP.NET应用程序中使用SQL Server中的SQL Server Profiler?

来自分类Dev

教程如何在Asp.Net MVC应用程序中使用EmguCV

来自分类Dev

如何在Windows应用程序中使用Log4net登录文件

来自分类Dev

如何在asp.net应用程序中使用Delphi制作的库?

来自分类Dev

如何在.NET Core RC2控制台应用程序(Linux,Debian 8)中使用System.Data?

来自分类Dev

如何在RestFul应用程序中使用OAuth 2在前端处理用户权限?

来自分类Dev

如何从 Django 请求中获取 oauth2 客户端应用程序

来自分类Dev

如何在我们的 Spring Boot oauth2 Web 应用程序中使用带有 google api 的组织域?

来自分类Dev

如何在.Net控制台应用程序中获取承载令牌?

来自分类Dev

如何在ASP.NET MVC / WebAPI应用程序中支持HTTP OPTIONS动词

来自分类Dev

如何在.NET Core 3.1 WebAPI中托管Angular应用程序?

Related 相关文章

  1. 1

    如何将OAuth2身份验证令牌从MVC5 wep应用程序传递到WebAPI2应用程序

  2. 2

    如何在ASP.NET Web应用程序中使用cloudinary url2png

  3. 3

    如何在C#UWP应用程序中使用ASP.NET Core WebAPI?

  4. 4

    如何为asp.net Web应用程序获取Google Api OAuth 2刷新令牌?

  5. 5

    如何在应用程序后端使用OAuth 2.0实施Box.net v2授权过程?

  6. 6

    如何在OAuth2中使用“刷新令牌”

  7. 7

    如何在ASP .NET Web API 2应用程序中使用ng-file-upload保存文件?

  8. 8

    如何在我的Web应用程序中使用AccountManager中的Google令牌?(使用omniauth-google-oauth2滚动)

  9. 9

    如何在单个带有Spring Cloud Security Oauth2的Spring引导应用程序中使用多个Oauth2 SSO服务器?

  10. 10

    我如何在思科注册我的应用程序以使用Cisco Oauth2?

  11. 11

    如何在Windows应用程序中使用Log4net登录文件

  12. 12

    如何在UnitTest中使用应用程序变量asp.net

  13. 13

    如何在asp.net控制台应用程序中使用依赖项注入?

  14. 14

    如何在.net标准库中使用应用程序见解?

  15. 15

    如何在.net核心应用程序中使用Powershell启动Windows服务?

  16. 16

    如何在Windows窗体应用程序(VB.NET)中使用UdpClient.BeginReceive

  17. 17

    如何在asp.net应用程序中使用CSS和javascript菜单?

  18. 18

    如何在外部asp.net应用程序中使用Dynamics AX Web服务

  19. 19

    如何在ASP.NET应用程序中使用SQL Server中的SQL Server Profiler?

  20. 20

    教程如何在Asp.Net MVC应用程序中使用EmguCV

  21. 21

    如何在Windows应用程序中使用Log4net登录文件

  22. 22

    如何在asp.net应用程序中使用Delphi制作的库?

  23. 23

    如何在.NET Core RC2控制台应用程序(Linux,Debian 8)中使用System.Data?

  24. 24

    如何在RestFul应用程序中使用OAuth 2在前端处理用户权限?

  25. 25

    如何从 Django 请求中获取 oauth2 客户端应用程序

  26. 26

    如何在我们的 Spring Boot oauth2 Web 应用程序中使用带有 google api 的组织域?

  27. 27

    如何在.Net控制台应用程序中获取承载令牌?

  28. 28

    如何在ASP.NET MVC / WebAPI应用程序中支持HTTP OPTIONS动词

  29. 29

    如何在.NET Core 3.1 WebAPI中托管Angular应用程序?

热门标签

归档