gpt4 book ai didi

asp.net-mvc - 使用 C# 以编程方式向 MVC Controller 验证 Azure Ad/OpenId 并获取重定向 uri

转载 作者:行者123 更新时间:2023-12-03 21:36:29 26 4
gpt4 key购买 nike

我已经覆盖了内置的 WebClient,如下所示。然后我叫它

public class HttpWebClient : WebClient
{
private Uri _responseUri;

public Uri ResponseUri
{
get { return _responseUri; }
}

protected override WebResponse GetWebResponse(WebRequest request)
{
WebResponse response = base.GetWebResponse(request);

_responseUri = response.ResponseUri;

return response;
}
}

然后我像这样消费它:
using (HttpWebClient client = new HttpWebClient())
{
client.Headers[HttpRequestHeader.Authorization] = $"Bearer { _token }";
client.Headers[HttpRequestHeader.ContentType] = "application/json";
client.UploadData(_url, Encoding.UTF8.GetBytes(_data));

string queryString = client.ResponseUri.Query.Split('=').Last();
}

响应 uri 返回“ https://login.microsoftonline”,而不是从带有查询字符串的 MVC Controller 返回的 url,因为它首先使用 AzureAd/OpenId 使用该承载 token 进行身份验证。如果我调用它两次,它会返回原始 _url 而不是重定向的 _url。如果我删除 AzureAd 身份验证它工作正常。有没有办法强制响应 uri 按照 MVC Controller 设置的方式返回?

最佳答案

假设您使用“UseOpenIdConnectAuthentication”并将其配置为使用 AAD 身份验证,您可以通过设置 Notifications.RedirectToIdentityProvider 来修改重定向 uri,例如:

Notifications = new OpenIdConnectAuthenticationNotifications
{
RedirectToIdentityProvider = async _ =>
{
_.ProtocolMessage.RedirectUri = _.Request.Uri.ToString();
}
}

如果您使用其他东西,或者我可能不明白您的问题 - 请提供更多信息

关于asp.net-mvc - 使用 C# 以编程方式向 MVC Controller 验证 Azure Ad/OpenId 并获取重定向 uri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35343507/

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