簡體   English   中英

在ASP.NET Web API2 Web服務中實現OAuth訪問令牌

[英]Implementating OAuth access token in ASP.NET Web API2 webservice

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

我想使用OAuth訪問令牌創建安全的Web服務。

如何將OAuth2實現為ASP.NET Web API2 Web服務?

我想在不登錄的情況下阻止使用Web服務 - 沒有訪問令牌。

有一個示例項目實現oauth2到Web服務?

WebApi控制器例如:

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更改身份驗證

這將創建一個項目,該項目使用具有承載令牌OAuth實現的新ASP.NET成員資格“家庭成員” ASP.NET身份

您需要注意的是以下類:

App_Start-> Startup.Auth.cs

令牌認證由OWIN中間件處理,這是配置管道的代碼。 最重要的是調用UseOAuthBearerTokens ,它將啟用3個OWIN中間件組件授權服務器中間件,應用程序承載令牌中間件,外部承載令牌中間件。 你可能不需要最后一個。

App_Start-> IdentityConfig.cs

默認情況下,ASP.NET Identity使用Entity Framework作為存儲提供程序(用戶,角色,聲明持久性)。 如果您不使用EF,則必須切換到另一個存儲提供程序或使用幾個接口自行實現。 ASP.NET身份的自定義存儲提供程序概述。

提供者- > ApplicationOAuthProvider.cs

OWIN中間件將使用適當的標頭處理每個請求。 下面是驗證HTTP標頭中針對存儲提供程序提供的用戶名和密碼的代碼,並返回將附加到每個后續HTTP請求的標記。

驗證工作流程

  1. 首先,您需要獲取安全令牌。 這是OAuth授權服務器的任務。 令牌端點配置為存在於http://yourSite/Token 要獲取令牌,您需要編寫一個特殊的HTTP標頭(使用Fiddler測試它)。 前3行應該轉到POST請求頭,最后一行請求body。

     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為安全資源編寫適當的GET請求(使用show response查看整個響應):

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

我希望這能讓你開始。

這不是OAuth更像是無狀態身份驗證。

它不是WebAPI,而是使用Nancy (我更喜歡WebAPI)和無狀態身份驗證的演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM