2016-03-24 91 views
0

我有一個應用程序,它接受JWTtoken並完成索賠並響應請求。一旦我收到JWTtoken,我想驗證它是否由我信任的Identity Server發佈。 任何想法應用程序如何執行JWTtoken驗證? 一個應用程序只需撥打電話: /connect/identitytokenvalidation?token = & client_id =並獲得令牌驗證完成? 我是否需要創建TokenClient實例來調用RequestAssertionAsync?或者我可以簡單地通過在查詢字符串中傳遞標記值來獲取http請求? 我可以通過以下方式獲取令牌值: Request.GetOwinContext()。Request.Headers [「Authorization」];在客戶端應用程序中驗證令牌

任何樣本都會有很大的幫助。

+0

你的「應用程序」是一個web API嗎?而令牌是訪問令牌? – leastprivilege

+0

是的,我實際上使用作爲IdentityServer3樣本的一部分部署的示例web api。令牌是訪問令牌。我仍然試圖找到如何驗證令牌。任何樣本都會有很大的幫助。 –

+0

我也嘗試通過在表單中​​傳遞令牌值來調用url:https:// myserver/IdentityServer/connect/accessTokenValidation,如下所示:var form = new { token = Request.GetOwinContext()。Request.Headers [ 「授權」] }; var resp = PostForm(TestUrl,form);但答覆即將到來,因爲不好的要求。 –

回答

0

如果您的端點在Katana管道中運行,那麼您可以使用Microsoft JWT承載身份驗證中間件,也可以使用IdentityServer3.AccessTokenValidation中間件。這些都是適當的驗證。

如果您不想使用這些並手動執行,則可以使用Microsoft JwtSecurityTokenHandler類執行驗證。

這裏的代碼中的相關行從我們的樣本網頁API

https://github.com/IdentityServer/IdentityServer3.Samples/blob/master/source/Clients/SampleAspNetWebApi/Startup.cs

app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions 
      { 
       Authority = "https://localhost:44333/core", 
       RequiredScopes = new[] { "write" }, 
      }); 
+0

是的,我有這樣的調用:UseIdentityServerBearerTokenAuthentication放置在我的Application2 startup.cs中。我想知道什麼時候傳入的令牌得到驗證...當Application1調用Application2時,Application1會將令牌傳遞給Application2。所以如果我在Application2中有上面的代碼,它夠了嗎?令牌會自動得到驗證? –

+0

也我看不到API:app.UseIdentityServerBearerTokenAuthentication調用IdenityServer來驗證令牌。所以我想知道什麼時候令牌得到驗證 –

0

如何使用IdentityServer3.AccessTokenValidation任何樣品?我仍然試圖找出如何驗證令牌。 我的應用1設置客戶端(指向Applicaiton2)對象的令牌,如下圖所示:現在

var client = new HttpClient 
      { 
       BaseAddress = new Uri(Application2Address) 
      }; 

      client.SetBearerToken(token); 

當請求轉到應用2,我要驗證此令牌應用2,以確保,令牌由可信身份服務器頒發。

相關問題