2015-05-20 45 views
1

我目前有一個分佈式系統,其中包含充當SSO服務器的OpenID Connect服務器(IdentityServer3)。使用SSO服務器的客戶端是帶WebAPI v2後端的AngularJS SPA:s。從OpenID服務器接收令牌的轉換

我得到了基本的登錄流程,但我需要一些幫助來配置WebAPI/OWIN管道以允許轉換收到的令牌聲明,即。消除不公平的索賠並增加當地索賠。我假設我需要創建一個本地JWT,而不是使用從SSO服務器收到的JWT。

問題是,這樣做的最好方法是什麼?是否有OWIN中間件可以幫助解決這個問題,還是我需要從SSO服務器收到的聲明中「手動」生成新的本地簽名的JWT?

當前的實現細節:

  1. 的AngularJS SPA認證反對使用 授權碼流SSO服務器,並接收所述授權碼。
  2. SPA將授權碼發佈到WebAPI。
  3. WebAPI接收授權碼並使用OAuth2Client類(Thinktecture.IdentityModel.Clients的一部分)從SSO服務器請求AccessToken/JWT。此AccessToken返回到SPA以用於對WebAPI進行的任何其他請求。

所以我的問題主要涉及到第3步。我如何最好地改變我目前的流程來生成一個包含本地索賠的令牌?

另外,什麼樣的認證中間件應該與您提出的解決方案一起使用(JwtBearerAuthentication,OpenIdConnectAuthentication或OAuthBearerAuthentication)?

Apoligizes爲我可能困惑的術語用法,我是一個關於OAuth,尤其是OWIN管道的初學者。 :)

回答

0
  1. 您的WebApi應該使用BearerTokenAuthentication。
  2. 爲了獲得訪問令牌(的access_token)和單一調用需要設置響應類型的responseType =「標記id_token」
  3. 您可以檢出各種準備在IdentityServer3 Samples運行示例聲明(id_token)。具體檢查隱式流程示例。