gpt4 book ai didi

java - 在 Cloud SDK 中使用 XSTokenRequest 获取 token

转载 作者:搜寻专家 更新时间:2023-11-01 03:30:50 25 4
gpt4 key购买 nike

我们使用 xs 安全库根据 token 类型 (client_credentials/user_token) 获取 token 。如果不使用 xs 安全库,我无法在 Cloud SDK 的安全功能中复制相同的内容。

背景:

  • 我们希望根据 token 的类型使用服务的凭证来完成 token 交换。

使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com