- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我们使用 xs 安全库根据 token 类型 (client_credentials/user_token) 获取 token 。如果不使用 xs 安全库,我无法在 Cloud SDK 的安全功能中复制相同的内容。
背景:
使用 xs 安全依赖项,我们使用以下代码使用客户端凭据获取技术 token /用户 token 。
//For client token
public String getClientCredentialToken() {
JSONObject buslogUaaCred = envar.getBuslogCredentials().getJSONObject("uaa");
XSTokenRequest xsTokenRequest = null;
try {
xsTokenRequest = new XSTokenRequestImpl(buslogUaaCred.getString("url"));
} catch (URISyntaxException e) {
e.printStackTrace();
}
xsTokenRequest.setClientId(buslogUaaCred.getString("clientid"));
xsTokenRequest.setClientSecret(buslogUaaCred.getString("clientsecret"));
xsTokenRequest.setType(XSTokenRequest.TYPE_CLIENT_CREDENTIALS_TOKEN);
String token = SecurityContext.getUserInfo().requestToken(xsTokenRequest);
return token;
}
//For named user token
public String getNamedUserToken() {
JSONObject buslogUaaCred = envar.getBuslogCredentials().getJSONObject("uaa");
XSTokenRequest xsTokenRequest = null;
try {
xsTokenRequest = new XSTokenRequestImpl(buslogUaaCred.getString("url"));
} catch (URISyntaxException e) {
e.printStackTrace();
}
xsTokenRequest.setClientId(buslogUaaCred.getString("clientid"));
xsTokenRequest.setClientSecret(buslogUaaCred.getString("clientsecret"));
xsTokenRequest.setType(XSTokenRequest.TYPE_USER_TOKEN);
String token = SecurityContext.getUserInfo().requestToken(xsTokenRequest);
return token;
}
为了安全起见,我已经使用以下依赖项来试用云 SDK。
<dependency>
<groupId>com.sap.cloud.s4hana.cloudplatform</groupId>
<artifactId>security</artifactId>
<version>2.18.1</version>
</dependency>
<dependency>
<groupId>com.sap.cloud.s4hana.cloudplatform</groupId>
<artifactId>security-scp-cf</artifactId>
<version>2.18.1</version>
</dependency>
我找不到任何方法来复制上述内容。
我只能找到一种方法来获取基于绑定(bind)到应用程序的 xsuaa 实例的 token ,如下所述:
// Get XSUAA service token.
public String getClientToken() {
return AuthTokenAccessor.getXsuaaServiceToken().getJwt().toString();
}
这在 Cloud SDK 中受支持吗?
最佳答案
SAP Cloud SDK 根据底层目标类型(是否需要用户传播)透明地处理到 XSUAA 的相关 OAuth 流。
我们在 SDK 中提供了相关功能,但并未公开,因为我们希望保留根据需要更改实现的自由。
我有点怀疑您是否真的需要并且想自己做这些流程。相反,我建议使用 SDK 的 VDM(客户端库)或 DestinationAccessor、HttpClientAccessor 或 ScpCfService 类。不过,如果您有充分的理由自行处理这些流程,请像您已经使用的那样使用 XS 安全库。
出于好奇,您为什么要自己做流程?
(免责声明:我是 SAP Cloud SDK for Java 的作者之一)。
关于java - 在 Cloud SDK 中使用 XSTokenRequest 获取 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56868652/
我们使用 xs 安全库根据 token 类型 (client_credentials/user_token) 获取 token 。如果不使用 xs 安全库,我无法在 Cloud SDK 的安全功能中复
我是一名优秀的程序员,十分优秀!