gpt4 book ai didi

c# - HttpClient 调用受 Azure AD 保护的站点

转载 作者:行者123 更新时间:2023-12-02 06:21:27 25 4
gpt4 key购买 nike

根据一些 Microsoft 示例,我得到了这一点:

ASP.NET Core 设置:

app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
{
ClientId = Configuration["Authentication:AzureAD:ClientId"],
Authority = Configuration["Authentication:AzureAd:Authority"],
ResponseType = OpenIdConnectResponseType.IdToken,
AutomaticAuthenticate = true,
TokenValidationParameters = new TokenValidationParameters()
});

授权测试端点:

[HttpGet]
[Authorize]
public IActionResult Get()
{
return Ok("SAMPLE TEXT - if you can read this then call it a day :)");
}

客户:

try
{
var result = await authContext.AcquireTokenAsync(WebApiResourceId, WebApiClientId, WebApiRedirectUri, new PlatformParameters(PromptBehavior.Auto));
authorizedClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);

var authorizedMessage = await authorizedClient.GetAsync("/AuthorizationTest");
var statusCode = authorizedMessage.StatusCode.ToString();
var message = await authorizedMessage.Content.ReadAsStringAsync();
webBrowser.NavigateToString(message);
}

并且 authorizedClient 的启动方式为:

private static HttpClientHandler handler = new HttpClientHandler
{
AllowAutoRedirect = true,
CookieContainer = new CookieContainer(),
UseCookies = true
};
private static HttpClient authorizedClient = new HttpClient(handler, false) { BaseAddress = WebApiBaseUri };

我过去只使用 BaseAddress 来初始化它,后来按照 So 上的答案添加了处理程序。

问题:
即使我正确地从 AAD 获取了 token ,WEB API 端点的响应也是一个 HTML(自动重定向后),即 MS 登录页面,并显示错误“您的浏览器是设置为阻止 cookie..."

我应该更改什么才能使 HttpClient 正常工作?或者我可以更改 WebApi 配置以不使用 cookie 吗?对于后一个选项,我找不到任何其他替代方案。

最佳答案

正如评论中所讨论的,您需要使用 Microsoft.AspNetCore.Authentication.JwtBearer 包中的 JWT 不记名 token 中间件。

Open ID Connect 中间件旨在将用户重定向到登录页面,而不是用于验证访问 token 。 JWT 不记名 token 中间件的示例用法可以在这里找到:https://github.com/Azure-Samples/active-directory-dotnet-native-aspnetcore/blob/master/TodoListService/Startup.cs .

关于c# - HttpClient 调用受 Azure AD 保护的站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41262378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com