无法访问/加密 PCF p-config-server 服务的端点

Cannot access /encrypt endpoint of PCF p-config-server service

我已按照 https://github.com/spring-cloud-services-samples/cook 的说明进行操作,并设法在 PCF 环境中安装和 运行 配置服务器(服务:配置服务器,计划:标准 ).

我现在正在尝试访问 p-config-server 服务的 /encrypt 端点,以便加密新值。我正在按照 http://docs.run.pivotal.io/spring-cloud-services/config-server/configuring-with-git.html#encryption-and-encrypted-values:

中的说明进行操作

TOKEN=$(curl -k ACCESS_TOKEN_URI -u CLIENT_ID:CLIENT_SECRET -d grant_type=client_credentials | jq -r .access_token); curl -k -H "Authorization: bearer $TOKEN" -H "Accept: application/json" URI/encrypt -d 'VALUE'

...但我总是得到:

{ "error": "access_denied", "error_description": "Access is denied" }

另一方面,如果我尝试获取标准端点,以获取应用程序的配置,我能够检索包含应用程序属性的 JSON。例如

TOKEN=$(curl -k ACCESS_TOKEN_URI -u CLIENT_ID:CLIENT_SECRET -d grant_type=client_credentials | jq -r .access_token); curl -k -H "Authorization: bearer $TOKEN" -H "Accept: application/json" URI/my-app/default

... 给出的结果如下:

{"name":"my-app","profiles":["default"],"label":null,"version":"bb6e64592ced731ebba272430291a595e0f14a77","state":null,"propertySources":[{"name":"https://github.com/some-user/config/my-app.yml","source":{"my-property.name":"Test123"}}]}

知道为什么我无法访问 /encrypt 端点吗? 谢谢。

顺便说一句,我在 CentOS Linux 版本 7.4.1708 中执行命令,安装了 jq(命令行 JSON 处理器)。

您好实际上您需要先点击 cf env 命令并记下示例中的配置值,如下所示:

{
 "VCAP_SERVICES": {
  "p-config-server": [
   {
    "credentials": {
     "access_token_uri": "https://p-spring-cloud-services.uaa.cf.wise.com/oauth/token",
     "client_id": "p-config-server-876cd13b-1564-4a9a-9d44-c7c8a6257b73",
     "client_secret": "rU7dMUw6bQjR",
     "uri": "https://config-86b38ce0-eed8-4c01-adb4-1a651a6178e2.apps.wise.com"
    },
[...]

然后在您的 curl bash 脚本中使用这些值。例如

TOKEN=$(curl -k https://config-86b38ce0-eed8-4c01-adb4-1a651a6178e2.apps.wise.com -u p-config-server-876cd13b-1564-4a9a-9d44-c7c8a6257b73:rU7dMUw6bQjR -d
grant_type=client_credentials | jq -r .access_token); curl -k -H
"Authorization: bearer $TOKEN" -H "Accept: application/json"
URI/ENDPOINT | jq

基本上需要以下值:

ACCESS_TOKEN_URI 的值为 credentials.access_token_uri

CLIENT_ID 的值为 credentials.client_id CLIENT_SECRET 的值为 credentials.client_secret

URI 的值为 credentials.uri

用相关端点替换 ENDPOINT:

application/profile 从配置服务器服务实例中检索配置 eureka/apps 从 Service Registry 服务实例中检索注册表

那么我认为您将不会再收到访问被拒绝的响应。

我从 CloundFoundry IT 支持那里得到了答案。在我的 CF 环境中,"encrypt" 端点应该有一个尾部斜杠 (/)。所以应该是...URI/encrypt/ -d 'VALUE'。也许对某人有帮助。

还有一个提示:Spring-Cloud-Services 有一个 CF CLI 插件,您可以方便地使用它。

https://github.com/pivotal-cf/spring-cloud-services-cli-plugin

cf install-plugin -r CF-Community "Spring Cloud Services"

cf help config-server-encrypt-value