Skip to content

基于API密钥的集成

除了使用“SiX统一认证/授权”控制台 来管理租户中的身份验证/授权资产。如果您的业务模型要求您通过 Restful API管理此类资产,则可以使用“集成密钥”来执行此操作。

如果您正在开发自己的API,如 基于 IAM 开发自己的 API 中所述,并将向客户公开这些 API 的访问权限,则您也可以使用“集成密钥”来控制这些 API 的细粒度访问。

集成密钥具有与 IdP(身份应用程序)用户类似的授权模型,您可以将其放入不同的组中以为其设置不同的权限,也可以为其设置自定义属性。

交互流程

请参阅基于 IAM 开发自己的 API页面和架构部分。

访问平台 API 的基本步骤

使用以下步骤创建集成密钥以访问平台或您自己开发的 API。

警告

集成密钥需要先进行身份验证才能成功访问平台 API。

1. 创建集成密钥并授予授权

登录“SiX统一认证/授权”控制台,导航到“服务/集成密钥 -> 创建集成密钥”按照说明创建一个集成密钥。

提示

集成密钥需要先进行身份验证才能成功访问平台 API。

下载RSA256私钥并将密钥ID复制到本地PC以供后面的使用。

警告

RSA256 私钥只会在控制台上出现一次,并且不会保留在“SiX统一认证/授权”租户存储中。

切勿将此密钥暴露给无意使用,因为它充当集成密钥的凭据!

通过设置密钥的属性和或将其放入不同的授权组中来授予授权,根据您具体的设计。

2. 验证集成密钥并获取访问令牌

使用 RSA256 私钥和密钥 ID 生成 JWT

使用您下载的私钥和密钥ID创建JWT并对其进行签名。

创建 JWT 的示例代码片段:

java
  public static String createJwtBearerTokenWithRsaPrivateKey(String pemEncodedRSAPrivateKey, String keyId, int expiringInSeconds) throws JOSEException {
        //Convert the x509 RSA private key in PEM format to JWK
        JWK jwk = JWK.parseFromPEMEncodedObjects(pemEncodedRSAPrivateKey);
        RSAKey rsaJWK = jwk.toRSAKey();
        long expiringTime = new Date().getTime() + expiringInSeconds * 1000;
        JWTClaimsSet claimsSet = new JWTClaimsSet.Builder()
                .subject(keyId) //set the keyId as subject
                .expirationTime(new Date(expiringTime))
                .build();
        SignedJWT signedJWT = new SignedJWT(
                new JWSHeader.Builder(JWSAlgorithm.RS256).keyID(keyId).build(),
                claimsSet);
        //Create signer from the private key
        JWSSigner signer = new RSASSASigner(rsaJWK);
        signedJWT.sign(signer);
        String jwt = signedJWT.serialize();
        System.out.println(jwt);
        return jwt;
    }

使用 JWT 交换访问令牌

使用“/oauth2/token”端点将JWT交换为访问令牌,授权标头需要如下:

标头名称标头值
assertion$JWT
grant_typeurn:ietf:params:oauth:grant-type:jwt-bearer

3. 使用访问令牌访问平台API。

将访问令牌放入“Authorization: Bearer ${access token}”请求标头中,然后访问下面列出的平台 API:

IDaaS 和 IAM 管理 API

设备 API

访问您自己的 API 的基本步骤

1. 创建集成密钥并授予授权

登录“SiX统一认证/授权”控制台,导航到“服务/集成密钥 -> 创建集成密钥”按照说明创建一个集成密钥。

提示

集成密钥需要先进行身份验证,才能成功访问平台API。

下载RSA256私钥并将密钥ID复制到本地PC以供后面使用。

警告

RSA256 私钥只会在控制台上出现一次,并且不会保留在“SiX统一认证/授权”租户存储中。

切勿将此密钥暴露给无意使用,因为它充当集成密钥的凭据!

通过设置密钥的属性和或将其放入不同的授权组中来授予授权,根据您具体的设计。

2. 验证集成密钥并获取访问令牌

使用RSA256私钥和密钥ID生成 JWT

使用您下载的私钥和密钥ID创建JWT并对其进行签名。

创建 JWT 的示例代码片段:

java
public static String createJwtBearerTokenWithRsaPrivateKey(String pemEncodedRSAPrivateKey, String keyId, int expiringInSeconds) throws JOSEException {
        //Convert the x509 RSA private key in PEM format to JWK
        JWK jwk = JWK.parseFromPEMEncodedObjects(pemEncodedRSAPrivateKey);
        RSAKey rsaJWK = jwk.toRSAKey();
        long expiringTime = new Date().getTime() + expiringInSeconds * 1000;
        JWTClaimsSet claimsSet = new JWTClaimsSet.Builder()
                .subject(keyId) //set the keyId as subject
                .expirationTime(new Date(expiringTime))
                .build();
        SignedJWT signedJWT = new SignedJWT(
                new JWSHeader.Builder(JWSAlgorithm.RS256).keyID(keyId).build(),
                claimsSet);
        //Create signer from the private key
        JWSSigner signer = new RSASSASigner(rsaJWK);
        signedJWT.sign(signer);
        String jwt = signedJWT.serialize();
        System.out.println(jwt);
        return jwt;
    }

使用JWT交换访问令牌

使用“/oauth2/token”端点将 JWT 交换为访问令牌,授权标头需要如下:

标头名称标头值
assertion$JWT
grant_typeurn:ietf:params:oauth:grant-type:jwt-bearer

3. 使用访问令牌访问您自己的 API。

将访问令牌放入您的 API 请求中,例如放入标头中,然后调用您自己开发的 API。

提示

在允许 API 访问之前,您的资源服务器需要先验证访问令牌的真实性,有关更多信息,请参阅:

通过 JWK 验证访问令牌

对于平台API的访问,此验证将默认执行。

领先的解决方案提供商