1

我有一个访问令牌和一个使用我的 cf 凭据生成的刷新令牌。我希望我的使用 CF API 的应用程序能够长时间连续运行,因此当访问令牌过期时,我将使用刷新令牌生成一个新的。但据我了解,刷新令牌也会过期,因此授权会话是有限的。我可以使用我的凭据生成一个新的访问令牌,但我不想将它们存储在代码文件或环境变量中。我能做点什么吗?

4

2 回答 2

0

要使其正常工作,您需要一个 UAA 客户端。与其传递您的访问/刷新令牌,不如传递一个 UAA 客户端和密码。然后,您将执行客户端凭据授予,以使用您的 UAA 客户端和密钥获取访问令牌。这会产生一个访问/刷新令牌,您可以使用该令牌向云控制器发出请求。

您通常会通过环境变量或作为用户提供的服务将 UAA 客户端和客户端密钥发送到您的应用程序。但是,如果您的环境中可用,您可以使用其他东西(CredHub、Vault 等)。

如果您使用 Java,cf-java-client 将为您处理所有这些。您PasswordGrantTokenProvider可以使用ClientCredentialsGrantTokenProvider.

https://github.com/cloudfoundry/cf-java-client/tree/master#cloudfoundryclient-dopplerclient-uaaclient-builders

也就是说,您实际上并不需要一个特殊的库。您可以使用您选择的编程语言中可用的任何 Oauth2 库,只要它支持客户端凭据授予类型。


如果您不想在代码中执行此操作,@poy 的回答也不错。它通过在代理中处理我上面提到的内容来启用访问。只要您的请求通过代理,它们就会使用访问令牌进行注释。

在部署它之前,请确保您了解代理正在做什么,并确保您了解如何正确保护它。任何可以访问代理的东西都可以发送授权请求,所以你真的需要确保它被正确锁定。

希望有帮助!

于 2018-11-05T13:33:54.537 回答
0

查看CF-Space-Security。它让您通过在您的进程旁边运行并管理令牌的进程进行代理。

于 2018-10-28T15:27:36.913 回答