如何在 Blazor Wasm 中阻止 HttpClient/浏览器请求客户端证书

问题描述 投票:0回答:1

使用 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"
})

但我不知道如何阻止浏览器请求客户端证书

c# blazor httpclient webassembly azure-api-management
1个回答
0
投票

您可以从 APIM 方面解决此问题,方法是专门为浏览器客户端设置第二个自定义域名,并且不启用协商选项。

© www.soinside.com 2019 - 2024. All rights reserved.