首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在OAuth Web API2 Web服务中实现API2访问令牌

在OAuth Web API2 Web服务中实现API2访问令牌
EN

Stack Overflow用户
提问于 2014-05-31 18:45:10
回答 2查看 13.7K关注 0票数 8

我使用jquery并使用jquery方法。

我希望使用OAuth访问令牌创建安全的Web服务。

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

我想防止在不登录的情况下使用web服务--没有访问令牌。

有一个用oauth2实现web服务的示例项目吗?

例如,WebApi控制器:

代码语言:javascript
复制
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:

代码语言:javascript
复制
$.get( "api/getdata", { id: 1, accessToken: "KEY" } )
.done(function( data ) {
alert( "Data Loaded: " + data );
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-03 22:36:43

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

这将创建一个项目,该项目使用新的ASP.NET成员“家庭成员”ASP.NET Identity承载令牌OAuth实现。

您需要查看的是以下类:

App_Start->Startup.Auth.cs

令牌身份验证由OWIN中间件处理,下面是配置管道的代码。最重要的是对UseOAuthBearerTokens的调用,它将支持授权服务器中间件、应用承载令牌中间件、外部承载令牌中间件三个组件。你可能不需要最后一个了。

App_Start->IdentityConfig.cs

默认情况下,ASP.NET标识使用实体框架作为存储提供程序(用户、角色、声明支持)。如果您不使用EF,则必须切换到另一个存储提供程序,或者使用几个接口实现它。用于ASP.NET标识的自定义存储提供程序概述。

Providers->ApplicationOAuthProvider.cs

OWIN中间件将使用适当的报头处理每个请求。下面是针对存储提供程序验证HTTP头中提供的用户名和密码的代码,并返回附加到每个后续HTTP请求中的令牌。

认证工作流

  1. 首先,您需要获得安全令牌。这是OAuth授权服务器的任务。令牌端点被配置为在http://yourSite/Token中存在。要获得令牌,您需要组成一个特殊的header (用费德勒测试它)。前3行应转到POST请求标头,最后一行应转到请求正文。 主机:您的站点内容-类型: application/json;charset=UTF-8内容-长度: 51 grant_type=password&username=xxxxxx&password=xxxxxx 如果凭据正常,您将收到以下响应。保存access_token值,以便在步骤2中使用它: access_token=c-D34PHKFGaPthuF2sIwmeowXYAPFiSPsMH... .expires=Tue 2014年6月17日22:11:12 GMT .issued=Tue,2014年6月3日22:11:12 GMT .issued=Tueexpires_in=1209599 token_type=bearer userName=xxxxxxx
  2. 使用jQuery编写对安全资源的适当GET请求(使用显示响应查看整个响应): var getData = function(){ var url = "http://yoursite/api/protectedResource/";$.ajax(url,{ type:"GET",标头:“授权”:"Bearer“+ accessToken }).always(showResponse);返回false;};

我希望这能让你开始。

票数 20
EN

Stack Overflow用户

发布于 2014-05-31 19:22:01

这并不是真正的OAuth,更像是无状态身份验证。

它不是WebAPI,而是使用南希 (我更喜欢使用WebAPI)和无状态auth的这是一个演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23973688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档