当前位置: 首页 > 知识库问答 >
问题:

使用HttpURLConnection的承载令牌(Java 8)

葛宏爽
2023-03-14

下午好

我正在做一个有两个应用程序的项目,第一个是一个php应用程序,它为我提供了一个API。第二个是我正在开发的应用程序(Java8base,no Spring)。我的问题是:我可以使用HttpURLConnection对象使用承载令牌授权吗?

我仍在努力实现这一点,但它似乎使“Authorization”的值为空。

            //responseLogin is the token that the php app provides.
            String token = "Bearer " + responseLogin.toString();
            HttpURLConnection httpApi = (HttpURLConnection) apiUrl.openConnection();
            httpApi = (HttpURLConnection) apiUrl.openConnection();
            httpApi.setRequestMethod("GET");
            httpApi.setDoOutput(true);
            httpApi.setRequestProperty("Content-Type", "application/json");
            httpApi.setRequestProperty("Accept", "*/*");
            httpApi.setRequestProperty("Authorization", token);
            httpApi.setRequestProperty("Connection", "keep-alive");
            httpApi.setRequestProperty("Accept-Encoding", "gzip, deflate, br");
            LOG.info("Token : " + httpApi.getRequestProperty("Authorization"));
            LOG.info("Accept : " + httpApi.getRequestProperty("Accept"));

HttpApi.get请求属性(授权));这部分给我一个空响应,我不知道为什么。

我希望任何人都可以帮助我,请随时问我,如果你需要更多关于我的代码的信息。

谢谢:)

共有1个答案

邢冷勋
2023-03-14

HttpURLConnection中有一个名为EXCLUDE_HEADERS的常量字符串数组,其注释如下:

// the following http request headers should NOT have their values
// returned for security reasons.
private static final String[] EXCLUDE_HEADERS = {
        "Proxy-Authorization",
        "Authorization"
};

其目的可能是为了避免意外转储这些标头,例如在记录请求时。

笔记这并不意味着它们没有被设置,只是当你查询它们时它们没有被返回。为了测试实际值,可以使用WireMock(或任何定制服务器)之类的工具来检查实际发送的内容。

 类似资料:
  • 我可以使用类似的代码和承载令牌进行GET,但似乎无法完成POST。 当我将Json、URL和承载令牌复制/粘贴到Postman中时,效果非常好。但从C#执行此操作时,会出现以下错误: “状态代码:400,原因短语:'错误请求',版本:1.1,内容:System.Net.Http.StreamContent,标题:{传输编码:分块连接:保持活动预期CT:最大年龄=604800,报告uri=”http

  • 我在用阿斯匹林。网络应用程序 我很困惑。我已经使用JSON网络令牌。我明白这一点。已知经典的 JSON 网络令牌。标头、有效负载、签名、自包含。客户端可以查看索赔数据。 但是不记名令牌是什么呢?不记名令牌也是独立的。我们可以通过不记名令牌访问令牌的数据。客户端看不到索赔数据。 那我们为什么不使用不记名令牌呢?不记名代币不是标准吗?有没有像 JWT 持有者令牌这样的东西? 以及如何在 MVC Web

  • 我在调用rest api时尝试使用承载令牌时遇到一些问题。 我尝试了两种方法,结果相同: 我在azure门户中创建了一个应用注册,并授予它使用devops api进行用户模拟的权限。 我在中创建了一个应用程序https://app.vsaex.visualstudio.com/并授予it项目/团队管理权限。 对于我的代码,我使用了这个(当我使用PAT进行身份验证时有效) 我使用以下示例获取令牌:h

  • 我正在使用改型2.0在Android上构建一个Bitbucket REST客户端。 就我而言,OAuth2.0提供了“隐式授权”,当用户在提示下登录到他们的帐户时,它立即向客户机提供访问承载令牌。 承载令牌是可用于访问受保护资源的令牌。任何拥有承载令牌的人与其他拥有承载令牌的人一样,都有权访问受保护的资源。(根据IETF的这份文件) 如果我错了,请纠正我,但我认为使用隐式授权,在用户登录到他们的B

  • 如何使用Live PayPal ClientID和密钥从PayPal https://api-M.PayPal.com/v1/oauth2/Token API调用中获得访问/承载令牌。 我在调用Postman中的API之前使用了下面的设置 基本Auth类型。主体tab=x-www-form-urlencoded。grant_type=client_credentials 我得到以下响应时调用以上A

  • 我已经创建了许多生成/使用JSON数据的Web服务,并使用OAuth2和承载令牌对它们进行了保护,效果很好。 然而,现在我需要构建一个类似的Web服务来生成图像而不是JSON(即JPEG/PNG数据)。为了保持一致性,我也想用OAuth2/承载令牌来保护服务,但是这样做会使服务在基于浏览器的应用程序中更具挑战性,这些应用程序希望使用 我认为有两种方法可以解决这个问题: > 修改OAuth2基础设施