如果我正確理解,您的要求是調用第二API(服務B)作爲來自經過認證的用戶的單個請求服務A的一部分。
如果是這種情況,那麼我相信沒有任何理由來存儲令牌服務器端,你可能只是需要從當前請求的Authorization
頭和再利用它來調用服務B。
某些代碼可能有助於解釋我的意思,假設ControllerA
是服務A控制器:
public class ControllerA : ApiController
{
public async Task<IHttpActionResult> GetFromB()
{
var token = Request.Headers.Authorization.Parameter;
MyModel result = null;
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token);
var response = await client.GetAsync("http://serviceb/controllerb/actionb");
response.EnsureSuccessStatusCode();
result = await response.Content.ReadAsAsync<MyModel>();
}
return Ok(result);
}
}
你能否解釋一下爲什麼你需要存儲的令牌服務器端?您是否需要在沒有用戶干預的情況下執行請求(例如計劃任務)? –
假設服務B提供了服務A依賴的某些功能。因此,當用戶呼叫服務A時,我想使用相同的令牌(來自服務A)來呼叫服務B.所以基本上服務A使用它所需的令牌,然後通過令牌傳遞給服務B. –