gpt4 book ai didi

c# - 在 ASP.NET Web API2 webservice 中实现 OAuth 访问 token

转载 作者:太空狗 更新时间:2023-10-29 18:08:16 26 4
gpt4 key购买 nike

我使用 ASP.NET Web API 并使用 jquery ajax 方法。

我想使用 OAuth 访问 token 创建安全的 Web 服务。

如何将 OAuth2 实现到 ASP.NET Web API2 Web 服务?

我想阻止在未登录的情况下使用 Web 服务 - 没有访问 token 。

是否有将 oauth2 实现到 Web 服务的示例项目?

WebApi Controller 例如:

public class GetDataController : ApiController
{
public string Get(int id, string accessToken)
{

//Check access token
//How can I implementing this logic for authorization valid access token
if (accessToken == isInvalid)
{
return "Access denied";
}

//If accessToken is valid return value
return "value";
}
}

Javascript:

$.get( "api/getdata", { id: 1, accessToken: "KEY" } )
.done(function( data ) {
alert( "Data Loaded: " + data );
});

最佳答案

最简单的方法是从新的 Visual Studio 2013 ASP.NET Web 应用程序模板 开始。在“新建 ASP.NET 项目”对话框中,选择“Web API”,然后单击“更改身份验证”按钮并选择选项“个人用户帐户”如下图:

Web API Change authentication

这将创建一个项目,该项目使用新的 ASP.NET 成员“家庭成员”ASP.NET Identitybearer token OAuth 实现。

你需要看的是以下几个类:

App_Start->Startup.Auth.cs

token 认证由 OWIN 中间件处理,这里是配置管道的代码。最重要的是调用 UseOAuthBearerTokens,这将启用 3 个 OWIN 中间件组件授权服务器中间件、应用程序承载 token 中间件、外部承载 token 中间件。您可能不需要最后一个。

App_Start->IdentityConfig.cs

默认情况下,ASP.NET Identity 使用 Entity Framework 作为存储提供程序(用户、角色、声明持久性)。如果您不使用 EF,则必须切换到另一个存储提供程序或使用几个接口(interface)自行实现。 Overview of Custom Storage Providers for ASP.NET Identity.

Providers->ApplicationOAuthProvider.cs

OWIN 中间件将使用适当的 header 处理每个请求。以下是针对存储提供商验证 HTTP header 中提供的用户名和密码并返回将附加到每个后续 HTTP 请求的 token 的代码。

身份验证工作流程

  1. 首先您需要获取安全 token 。这是 OAuth 授权服务器的任务。 token 端点配置为存在于 http://yourSite/Token。要获得 token ,您需要编写一个特殊的 HTTP header (使用 Fiddler 对其进行测试)。前 3 行应转到 POST 请求 header ,最后一行应转到请求正文。

    Host: yoursite
    Content-Type: application/json;charset=UTF-8
    Content-Length: 51

    grant_type=password&username=xxxxxx&password=xxxxxx

    如果凭据没问题,您将收到以下响应。保存 access_token 值,以便您在第 2 步中使用它:

    .expires=Tue, 17 Jun 2014 22:11:12 GMT
    .issued=Tue, 03 Jun 2014 22:11:12 GMT
    access_token=c-D34PHKFGaPthuF2sIwmeowXYAPFiSPsMH...
    expires_in=1209599
    token_type=bearer
    userName=xxxxxxx
  2. 使用 jQuery 编写对 protected 资源的适当 GET 请求(使用 show response 查看整个响应):

    var getData = function(){
    var url = "http://yoursite/api/protectedResource/";
    $.ajax(url,{
    type: "GET",
    headers: "Authorization" : "Bearer " + accessToken
    }).always(showResponse);
    return false;
    };

我希望这能让你入门。

关于c# - 在 ASP.NET Web API2 webservice 中实现 OAuth 访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23973688/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com