2016-10-27 21 views
0

我需要在IdentityServer3中的自定義授予類型上爲「act-as」模式的令牌內添加令牌。 我嘗試使用PreserveAccessToken,但它只是在當前的ClaimsPrincipal中將該標記添加爲聲明,但無法找到將另一個標記傳遞給鏈中的下一個服務/ api時將其作爲聲明嵌套的方法。IdentityServer3 - 爲自定義授予類型(行爲模式)在令牌內添加令牌

這背後的想法是能夠保持從最終用戶到調用鏈中最後一個服務/ api的所有跳轉的審計。

+0

爲什麼不創建一個correlationId,並把它作爲一些頭部的一部分呢? –

+0

因爲調用鏈中的最後一個鏈接(例如,使得實際調用DB並嘗試記錄此操作的審計)應能夠提取操作啓動器(如最終用戶)以及作爲操作一部分的中間所有服務/ apis。如果我能夠使IdSrvr將令牌嵌套在另一個令牌中,那麼它應該可以解決所有問題,而無需額外的工作。 – CesarD

回答

1

這可以使用自定義授權來實現。這允許用定製「操作」擴展令牌端點 - 例如發佈包含委託索賠的令牌 - 例如令牌。

文檔是在這裏:https://identityserver.github.io/Documentation/docsv2/advanced/customGrantTypes.html

這裏也就是接近您的方案的示例:https://github.com/IdentityServer/IdentityServer3.Samples/tree/master/source/Multi%20Hop%20Delegation%20(ActAsCustomGrant)

是說 - 這可能是通過多跳傳達一個用戶ID最昂貴的方式。

如果在後端系統之間存在可信子系統,只需將所需數據作爲有效載荷進行傳輸就簡單多了,而且要快得多。

+0

是的,我一直在嘗試使用Multi-hop樣本很長一段時間。在調用鏈中嘗試使用第三個API時,我遇到了問題,因爲當我到達第三個API時,由於它只跟蹤以前的客戶端,我會失去第一個API的跟蹤。我關心傳輸有效負載數據的問題是,我應該委託給Api的業務邏輯,我認爲這應該由授權/令牌邏輯處理。 – CesarD

+0

也許我試圖實現更多與此有關:https://tools.ietf.org/html/draft-hunt-oauth-chain-01 – CesarD

+0

是否有可能使用acr值以某種方式實現此目的? – CesarD