使用 HTTP 客户端从 Blazor WASM 调用 APIM 上的 API 时,系统会要求用户选择客户端证书。我们不需要这个额外的身份验证方法,因为该方法由 jwt 令牌保护。
在我们的 APIM 上,我们启用了“协商客户端证书”选项,以启用某些只能使用客户端证书进行身份验证的客户端。由于这是在域级别启用的,因此无法禁用此选项。
有什么方法可以通过 Httpclient 配置禁用(浏览器)行为,以便用户不再被要求选择客户端证书?
复制代码:
@code {
protected override async Task OnInitializedAsync()
{
HttpClient x = new HttpClient();
await x.GetAsync("https://api.domain.tld/method/");
}
}
我尝试将 ClientCertificateOptions 设置为 ClientCertificateOption.Manuel 我尝试设置 LocalCertificateSelectionCallback,但这确实需要实际的证书
我可以像这样使用 js fetch api 时重现我的问题:
fetch("https://api.domain.tld/method/", {
method: "GET",
headers: {
"Ocp-Apim-Subscription-Key": "the-actual-key-here",
"Authorization" : "Bearer ey...Pw"},
"Host": "api.domain.tld",
"Origin": "https://someorigin"
})
但我不知道如何阻止浏览器请求客户端证书
您可以从 APIM 方面解决此问题,方法是专门为浏览器客户端设置第二个自定义域名,并且不启用协商选项。