【问题标题】:Get token from OKTA API - Java (plain) example从 OKTA API 获取令牌 - Java(普通)示例
【发布时间】:2022-02-08 18:24:55
【问题描述】:

我在 OKTA 环境 here 上创建了一个帐户。 我在网上搜索,但找不到任何关于如何从 OKTA API 获取访问令牌的示例。我正在寻找“普通”Java 代码中的一些示例。但是,如果任何 SDK 中有东西,我会很高兴。 我尝试向 /token 端点创建一个 HTTP 请求 (POST)。我在正文中使用了 cliend_idclient_secret -。我还尝试将标头作为基本身份验证(在此之前,我使用 Base64 编码 client_id:client_secret),但我仍然获得未经授权的(401)。

【问题讨论】:

  • Hrrmm 登录端点不应​​该要求存在令牌......这没有多大意义?
  • 我不明白。哪个端点?你能再描述一下吗?
  • 您是说您想点击OKTA API 来检索访问令牌(这将被视为登录端点)....但是您得到的是 401?用于检索令牌的端点如何要求存在令牌?
  • 你是对的,但是该端点需要 client_id 和 client_secret,并且需要很少的设置才能工作。也许我的 HTTP 请求配置错误,这就是我收到错误的原因。因此,我正在寻找这样的工作示例。
  • 供将来参考,okta-oauth-java 是用于手动检索身份验证令牌的 SDK。我知道它可以处理用户名 + 通过身份验证,我不知道它是否可以处理您的 client_id + client_secret = 令牌用例。

标签: java httprequest okta


【解决方案1】:

好的,我有一个解决方案。问题是 OKTA 上的配置错误。 对于那些需要工作示例的人,我将分享我测试过的代码(相信我,它有效)

 public String GetToken() throws IOException, InterruptedException {
    HttpClient client = HttpClient.newBuilder()
            .build();

    HttpRequest httpRequest = HttpRequest.newBuilder()
            .uri(URI.create("https://YOUR_OKTA_DOMAIN/oauth2/default/v1/token"))
            .headers("Content-type", "application/x-www-form-urlencoded",
                    "Authorization", "Basic " + Base64.getEncoder().encodeToString("CLIENT_ID:CLIENT_SECRET".getBytes()),
                    "Accept", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(
                    "&grant_type=client_credentials" ))
            .build();

    HttpResponse<?> response = client.send(httpRequest, HttpResponse.BodyHandlers.ofString());       

    return response.body().toString();
}

在 Okta 上,您需要为授权服务器创建额外的范围。这个范围应该是默认的,或者如果你不想设置默认范围,你必须将它添加到正文中作为

.POST(HttpRequest.BodyPublishers.ofString(
                    "&grant_type=client_credentials" + 
                    "scope=SCOPE_NAME"))

【讨论】:

  • 我的桌面应用程序需要一个工作示例??!!你能帮忙@Marcin
  • 对不起,我不能分享这个应用程序,因为它是商业的。但请问一下,我会尽力帮助你的。
猜你喜欢
  • 2019-01-03
  • 1970-01-01
  • 2017-05-20
  • 2022-08-23
  • 1970-01-01
  • 1970-01-01
  • 2017-06-12
  • 1970-01-01
  • 2019-02-18
相关资源
最近更新 更多