2016-07-17 38 views
0

我已經開始使用OpenID Connect實現隱式流 - 我已經在基於瀏覽器的JavaScript應用程序中檢索到我的訪問令牌和ID令牌,現在我需要保護我的資源ASP.NET Core Web API,因此只能通過具有特定聲明的用戶的有效訪問令牌訪問。OpenID Connect隱式流 - 資源服務器

我使用什麼中間件來驗證令牌並確定用戶及其聲明,以便我可以允許或拒絕他們訪問他們正在請求的資源?

我已經看過OpenIdConnectAuthentication中間件,但是我見過的唯一實現示例使用了SignInScheme的「Cookie」,而不是我的js應用提供的持證者標記。

感謝

回答

2

什麼中間件做我使用驗證令牌(S)和確定用戶和他們的要求,所以我就可以允許或拒絕他們訪問他們所請求的資源?

如果你的授權服務器發出JWT令牌,你可以使用由ASP.NET團隊開發的智威湯遜承載中間件:https://github.com/aspnet/Security/tree/dev/src/Microsoft.AspNetCore.Authentication.JwtBearer

app.UseJwtBearerAuthentication(new JwtBearerOptions { 
    Authority = Configuration["jwt:authority"], 
    Audience = Configuration["jwt:audience"] 
}); 

您可以在這裏找到樣品:https://github.com/aspnet/Security/tree/dev/samples/JwtBearerSample

+0

非常感謝Kévin的回覆(你做得很好!)。我查看了JwtBearer中間件,但它似乎沒有包含向UserInfo端點發出請求以獲取請求中使用的請求。不僅如此,我只能使用ID Token而不是Access Token(根據我讀過的內容,我認爲我應該使用)按照這篇文章(http://stackoverflow.com/questions/) 38394545/usejwtbearerauthentication簽名密鑰)。你能爲我提供進一步的幫助嗎?謝謝! – Steve

+1

理論上,userinfo端點僅供客戶端應用程序用於檢索有關已認證用戶的數據,而不是由資源服務器獲取:訪問令牌應包含爲正確標識用戶所需的所有聲明。如果資源服務器無法直接讀取訪問令牌,則選項是使用授權服務器提供的自檢端點(如果支持)。請注意,我不建議使用身份標記來查詢您的API。這不是爲此發佈的。 – Pinpoint

+0

再次感謝。這引發了更多的問題。例如,我將如何驗證RESTful API中沒有ID令牌的訪問令牌,因爲規範指出我需要ID令牌(http://openid.net/specs/openid-connect-core-1_0.html#CodeFlowTokenValidation) 。另一個問題是,隱式流是否適用於帶有外部IdP的RESTful API的SPA。還有更多。你知道一個論壇來問你這些問題嗎?除了你自己,我正努力尋找這些問題的好答案和實現? – Steve