簡體   English   中英

IdentityServer3-401調用Identity API Controller時未授權

[英]IdentityServer3 - 401 Unauthorized when calling Identity API Controller

我有一個使用IdentityServer3進行身份驗證即服務的項目。

最近,我的任務是為最終用戶創建無縫體驗來編輯其身份信息。

為此,我在應用程序中創建了一個API控制器,該API控制器使用HTTPClient調用了我IdentityServer項目中的另一個API控制器。 它基本上向世界公開了身份管理方法,但是將任何請求“傳遞”給IdentityServer Api。

一切正常,直到我調用IdentityServer Api控制器。 不管是否存在“授權”屬性,我的斷點都不會命中。 我最終收到了來自IdentityServer Api控制器的“ 401:未經授權”消息。

我試圖重用原始請求的Auth標頭,但這沒有用。 我還嘗試從我的聲明原則中找到一個“ access_token”聲明,但未找到。

這是一個代碼片段:

            var httpClient = new HttpClient();

            // this didn't work - tried reusing the auth from the original request
            //httpClient.DefaultRequestHeaders.Authorization = request.Headers.Authorization;

            // this didn't work either - "access_token" is not found 
            //httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", Caller.FindFirst("access_token").Value);
            var routePrefix = GetRoutePrefix();

            var response = await httpClient.PostAsync(
                       $"{routePrefix}/post",
                       new ObjectContent(typeof(TDObj), entity, new JsonMediaTypeFormatter()));

            return response;

我是IdentityServer3和OAuth的新手,不確定下一步如何做。 我嘗試為“身份”創建一個新的作用域,並嘗試使其成為客戶端應用程序中的必需作用域,但這似乎並沒有解決問題。 我知道我在這里缺少一些關鍵的了解,但是IdentityServer的文檔太多了,我不知道從哪里開始,也找不到適合此需求的任何東西。 我在雜草中! 誰能幫助我了解這里的事嗎? 謝謝!

我通過遵循Scott Brady的回答在這里工作: Identity Server和用於用戶管理的Web API

但是,他的回答並沒有立即為我解決。 我必須確保對UseIdentityServerTokenValidation的調用在api路由映射發生之前發生。

話雖這么說,我最初嘗試從前端應用程序的入站HTTPRequest中劫持Authorization標頭的工作是可行的,因此我能夠刪除任何請求訪問令牌的代碼,而不必在HttpClient上使用SetBearerToken() 。 只是這個:

httpClient.DefaultRequestHeaders.Authorization = request.Headers.Authorization;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM