Ktor 客户端 - 基本身份验证在 install() 中不起作用,必须添加到每个请求中吗?

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

我有一个 Ktor 客户端从具有基本身份验证的服务器请求。

当我

install()
按照文档进行基本身份验证时,它不起作用 - 我返回 HTTP 401。

val response1 =
    HttpClient(Java.create()) {
        install(Auth) {
            basic {
                credentials {
                    BasicAuthCredentials("[email protected]", pass)
                }
            }
        }
    }
   .use { it.get("https://mycompany.something.net/rest/servicedeskapi/request") }

我需要将身份验证添加到请求中才能使其正常工作:

      .use { 
          it.get("https://mycompany.something.net/rest/servicedeskapi/request") {
              basicAuth("[email protected]", pass)
          }
      }

为什么客户端的auth设置不够?我是不是做错了什么?

kotlin authentication client basic-authentication ktor
1个回答
0
投票

发布后不久,我发现它实际上是Ktor客户端身份验证功能不发送授权标头的重复

因此,简而言之:出于某种原因,默认情况下,Ktor 选择不发送

Authorization
标头,直到授权失败。恕我直言,这不是太幸运的决定。

这可以通过

sendWithoutRequest { true }
更改:

    install(Auth) {
        basic {
            sendWithoutRequest { true }
            credentials { BasicAuthCredentials(user, pass) }
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.