sap-cloud-sdk - Oauth2ClientCredentials - 目标服务返回错误:未授权客户端
问题描述
我尝试使用定义为 Oauth2ClientCredentials 的 CF 目标,其中身份验证服务器只需要用户/密码而不需要 clientid/clientsecret 来生成令牌。我在目标配置中有一个虚拟的客户端 ID 和客户端密码,因为它是强制性的,但它似乎只考虑了客户端 ID/密码,而不考虑令牌用户/密码。堆栈跟踪是:
com.sap.cloud.sdk.cloudplatform.connectivity.exception.DestinationAccessException: Failed to get authentication headers. Destination service returned error: unauthorized_client.
at com.sap.cloud.sdk.cloudplatform.connectivity.ScpCfHttpDestinationPropertyFactory.getAuthTokenHeaders(ScpCfHttpDestinationPropertyFactory.java:376) ~[cloudplatform-connectivity-scp-cf-3.0.0.jar:na]
at com.sap.cloud.sdk.cloudplatform.connectivity.ScpCfHttpDestinationPropertyFactory.getHeadersFromDestination(ScpCfHttpDestinationPropertyFactory.java:328) ~[cloudplatform-connectivity-scp-cf-3.0.0.jar:na]
at com.sap.cloud.sdk.cloudplatform.connectivity.ScpCfHttpDestination.getHeaders(ScpCfHttpDestination.java:288) ~[cloudplatform-connectivity-scp-cf-3.0.0.jar:na]
at com.sap.cloud.sdk.cloudplatform.connectivity.HttpClientWrapper.wrapRequest(HttpClientWrapper.java:86) ~[cloudplatform-connectivity-3.0.0.jar:na]
at com.sap.cloud.sdk.cloudplatform.connectivity.HttpClientWrapper.execute(HttpClientWrapper.java:97) ~[cloudplatform-connectivity-3.0.0.jar:na]
at com.demo.destinationtest.MainController.worksoft(MainController.java:111) ~[classes/:na]
调试器中的 ScpCfHttpDestination 值为:
ScpCfHttpDestination(destinationType=HTTP, name=test, description=test connection, propertiesByName=ScpCfDestination(destinationType=HTTP, name=test, description=test connection, propertiesByName=DefaultDestination(properties={tokenServiceURLType=Dedicated, clientId=dummy, Description=test connection, tokenServiceUser=mymail@domain.com, tokenServiceURL=http://domain/executionmanager/api/Token, URL=http://domain/executionmanager/api/Requests, Name=test, tokenServicePassword=(hidden), authTokens=[ScpCfDestinationServiceV1Response.DestinationAuthToken(type=, value=, error=unauthorized_client, expiresIn=0)], Type=HTTP, certificates=null, Authentication=OAuth2ClientCredentials, clientSecret=STOTest3, ProxyType=Internet})))
我有一个好的客户端密码/客户端 ID 的另一个目的地工作正常。
解决方案
Cloud Foundry 支持的唯一 OAUTH 目的地是客户端凭据,而不是密码流,因此这不是云 sdk 限制。
推荐阅读
- python - Python 和 Tweepy:CSV 文件中的结果
- android - 在运行时将文本视图添加到 relativlayout
- swift - 从文本字段输入在现有表中创建新行。SwiftUI(故事板)
- r - RStudio README.Rmd 和 README.md 都应该分阶段使用'git commit --no-verify'来覆盖这个检查
- azure-data-lake - ADLS 是否支持符号或别名?
- c# - datagridview c#的参数超出范围异常
- android - 未使用导航组件将片段添加到后台堆栈
- reactjs - React 16+ 中的 React、Enzyme、Redux 单元测试连接组件
- google-sheets - 查找(并返回)包含公式的单元格范围
- python - 使用 xampp 从 python 函数显示 print()