2017-10-16 107 views
0

我有一個使用隱式流與身份服務器4進行身份驗證的應用程序。該應用程序分爲兩個獨立的.net核心應用程序。一個應用程序處理服務於前端的後端和其他手柄。在客戶端之間共享訪問令牌

後端和前端共享相同的作用域,API名稱和權限設置。

我將與第三方進行整合。我們的後端應用程序將調用第三方應用程序。我們需要確保對第三方應用程序的呼叫進行身份驗證。我想共享後端應用程序從前端接收到的訪問令牌並將其發送給第三方應用程序。我不太確定這樣做所需的設置。

我以爲我可以添加一個新的客戶端到身份服務器,並設置它只有第三方所需的所需範圍。但在我的本地測試中,我一直無法得到這個工作。我得到一個錯誤IDX10804無法從... /。獲取配置。well-known/openid-configuration - 發生安全錯誤。

我的配置是這樣的:

  new Client 
      { 
       ClientId = "thirdPartyClient", 
       ClientName = "thirdPartyClient", 
       AllowedGrantTypes = GrantTypes.HybridAndClientCredentials, 
       ClientSecrets = 
       { 
        new Secret("secret".Sha256()) 
       }, 
       AllowedScopes = 
       { 
        IdentityServerConstants.StandardScopes.OpenId, 
        IdentityServerConstants.StandardScopes.Profile, 
        IdentityServerConstants.StandardScopes.Email 
       }, 

       AllowOfflineAccess = true, 
       AllowAccessTokensViaBrowser = true, 
       RequireConsent = false 
      }, 

      new Client 
      { 
       ClientId = "myapplication", 
       ClientName = "myapplication", 
       AllowedGrantTypes = GrantTypes.Implicit, 
       ClientSecrets = 
       { 
        new Secret("secret".Sha256()) 
       }, 


       RedirectUris = { "https://.../callback.html" }, 
       PostLogoutRedirectUris = { "https://.../index.html" 
       AllowedCorsOrigins = { "https://..." }, 
       AllowedScopes = 
       { 
        IdentityServerConstants.StandardScopes.OpenId, 
        IdentityServerConstants.StandardScopes.Profile, 
        IdentityServerConstants.StandardScopes.Email, 
        IdentityServerConstants.StandardScopes.Address, 
        "myscope", 
       }, 

       AllowOfflineAccess = true, 
       AllowAccessTokensViaBrowser = true, 
       RequireConsent = false 
      } 

我要對這個正確的方式?

+0

這是什麼狀態? – MJK

回答

0

您還沒有在客戶端添加重定向uri thirdPartyClient。沒有重定向uri客戶端將無效。

RedirectUris

指定允許的URI如果打開detailed logging與禁用只是我的代碼令牌或授權碼返回

。你可以看到錯誤日誌找到真正的原因

+0

我會嘗試詳細的日誌記錄。對於thirdPartyClient,呼叫流程是: 1.用戶不會在瀏覽器中的一些動作 2.瀏覽器調用我們的C#的Web API 3.我們的C#的Web API調用thirdPartyClient 4. thirdPartyClient做一個動作,並返回HTTP響應 5. C#Web API接收響應並將結果返回給用戶的瀏覽器 在此流程中,用戶不會離開我們的用戶界面。在這種情況下需要重定向URI嗎? 但是,最終,我們需要添加一個用戶點擊鏈接的流程,並且鏈接執行SSO並將用戶登錄到第三方用戶界面。 –

+0

@RiazAhmad我的意思是'RedirectUris = {「https://.../callback.html」},''ClientId =「thirdPartyClient」缺少部分,'你有沒有嘗試添加它? – MJK

+0

我修復了IDX10804錯誤。這是一個權威url的簡單無效配置,在本地運行。 隨着解決,我得到一個「觀衆是無效的」錯誤。所以它看起來像我不能重複使用相同的訪問令牌,因爲clientid是不同的。如果我使用ClientId =「myapplication」而不是ClientId =「thirdPartyClient」,則錯誤消失。這是因爲令牌被簽名而產生的。這應該如何在微服務架構中起作用?每項服務是否都需要使用相同的客戶端ID?如果初始登錄來自不同的客戶端ID,我們如何執行SSO? –

相關問題