云服务器内容精选

  • 获取方式 获取CraftArts IPDCenter系统管理员账号密码,通常为购买者注册的华为云账号。 登陆CraftArts IPDCenter系统首页,https://域名/unifiedportal/,可以在购买页面找到此地址。 进入管理中心。 图1 管理中心 在应用集成页面添加一个自己产品的应用。 图2 应用集成 在密钥管理页面创建密钥,创建成功后将会弹出密钥编码,私钥信息。 图3 秘钥管理
  • 收集信息 表1 收集信息 项目 说明 私钥/公钥获取URL/密钥ID 访问私钥是在CraftArts IPDCenter API交互过程身份凭证。通过私钥生成认证凭据,用于确保请求者身份的正确性。公钥获取URL自动获取公钥的地址,通过此地址,可自动获取公钥信息,用于检验认证凭据的正确性。 公钥获取URL地址为:https://域名/文根/basic/mgmt//public/api/v1/keymanage/getPublicKeyList 私钥与密钥ID见下面获取方式。
  • 代码示例 @Controller @RequestMapping("/api") public class TestController { @GetMapping("/testApi") public String test(HttpServletRequest request) { String token = request.getHeader("x-isc-token"); String issuer = JwtTokenService.verifyAndReturnIssuer(token); if (issuer.equals("user")) { return "success"; } return "error"; } }
  • JWT的组成 图1 Json web token 一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名。形式为: A.B.C 样本数据如下: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdWQiOlsiZGVmYXVsdCIsImdhdGV3YXkiXSwiYXBwSWQiOiJkZWZhdWx0IiwiaXNzIjoiZGVmYXVsdCIsImV4cCI6MTU0NDY5MDY0NywiaWF0IjoxNTQ0Njg4ODQ3fQ.J-ngHZy8009k-OAQ7-6Jt2kUzsml6N60d-atVIP3UydsQH_GqFv4rSY_uliqZ2_8ecgcKm0pWAAFtN88t7ehVQ 头部( Header ) JWT需要一个头部,头部用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等。 头部信息是经过BASE64 编码的,包括以下几个属性: typ: token类型,固定,即JWT; alg: 签名算法类型,如RSA; kid: 密钥ID,由CraftArts IPDCenter颁发。 载荷(Payload) 载荷信息是经过BASE64编码解码后的JSON对象,包括以下几个属性: iss:该JWT的签发者,当前使用域名填充; sub:该JWT所面向的用户,当前使用系统应用Id; aud:接收该JWT的一方,当前使用被调用系统应用Id; exp(expires):什么时候过期,这里是一个Unix时间戳,默认5分钟; iat(issued at):在什么时候签发的(UNIX时间); nbf(Not Before):如果当前时间在nbf里的时间之前,则token不被接受;是否使用是可选的。 签名(Signature) 将上面的两个Base64编码后的字符串都用英文句号“.”连接在一起(头部在前),就形成了: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdWQiOlsiZGVmYXVsdCIsImdhdGV3YXkiXSwiYXBwSWQiOiJkZWZhdWx0IiwiaXNzIjoiZGVmYXVsdCIsImV4cCI6MTU0NDY5MDY0NywiaWF0IjoxNTQ0Njg4ODQ3fQ 最后,我们将上面拼接完的字符串用HS512算法进行加密。在加密的时候,我们还需要提供一个密钥(secret)。如果我们用mystar作为密钥的话,那么就可以得到我们加密后的内容: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdWQiOlsiZGVmYXVsdCIsImdhdGV3YXkiXSwiYXBwSWQiOiJkZWZhdWx0IiwiaXNzIjoiZGVmYXVsdCIsImV4cCI6MTU0NDY5MDY0NywiaWF0IjoxNTQ0Njg4ODQ3fQ.J-ngHZy8009k-OAQ7-6Jt2kUzsml6N60d-atVIP3UydsQH_GqFv4rSY_uliqZ2_8ecgcKm0pWAAFtN88t7ehVQ
  • 工作原理 统一认证SDK是基于JWT实现的一种认证机制,Json web token (JWT)是在网络应用环境间为了传递声明而执行的一种基于JSON的开放标准(RFC 7519)。该token的设计紧凑且安全,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便从资源服务器获取资源。它也可以被增加一些其它业务逻辑所必须的声明信息。该token可直接被用于认证,也可被加密。 API请求方将请求的用户信息利用私钥哈希生成签名,将用户信息与签名合并生成token,在调用API时将token传递给被调用方,API被调用方获取到此token后,利用公钥验证此token的正确性。
  • JWT的组成 图1 Json web token 一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名。形式为: A.B.C 样本数据如下: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdWQiOlsiZGVmYXVsdCIsImdhdGV3YXkiXSwiYXBwSWQiOiJkZWZhdWx0IiwiaXNzIjoiZGVmYXVsdCIsImV4cCI6MTU0NDY5MDY0NywiaWF0IjoxNTQ0Njg4ODQ3fQ.J-ngHZy8009k-OAQ7-6Jt2kUzsml6N60d-atVIP3UydsQH_GqFv4rSY_uliqZ2_8ecgcKm0pWAAFtN88t7ehVQ 头部( Header ) JWT需要一个头部,头部用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等。 头部信息是经过BASE64 编码的,包括以下几个属性: typ: token类型,固定,即JWT; alg: 签名算法类型,如RSA; kid: 密钥ID,由CraftArts IPDCenter颁发。 载荷(Payload) 载荷信息是经过BASE64编码解码后的JSON对象,包括以下几个属性: iss:该JWT的签发者,当前使用域名填充; sub:该JWT所面向的用户,当前使用系统应用Id; aud:接收该JWT的一方,当前使用被调用系统应用Id; exp(expires):什么时候过期,这里是一个Unix时间戳,默认5分钟; iat(issued at):在什么时候签发的(UNIX时间); nbf(Not Before):如果当前时间在nbf里的时间之前,则token不被接受;是否使用是可选的。 签名(Signature) 将上面的两个Base64编码后的字符串都用英文句号“.”连接在一起(头部在前),就形成了: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdWQiOlsiZGVmYXVsdCIsImdhdGV3YXkiXSwiYXBwSWQiOiJkZWZhdWx0IiwiaXNzIjoiZGVmYXVsdCIsImV4cCI6MTU0NDY5MDY0NywiaWF0IjoxNTQ0Njg4ODQ3fQ 最后,我们将上面拼接完的字符串用HS512算法进行加密。在加密的时候,我们还需要提供一个密钥(secret)。如果我们用mystar作为密钥的话,那么就可以得到我们加密后的内容: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdWQiOlsiZGVmYXVsdCIsImdhdGV3YXkiXSwiYXBwSWQiOiJkZWZhdWx0IiwiaXNzIjoiZGVmYXVsdCIsImV4cCI6MTU0NDY5MDY0NywiaWF0IjoxNTQ0Njg4ODQ3fQ.J-ngHZy8009k-OAQ7-6Jt2kUzsml6N60d-atVIP3UydsQH_GqFv4rSY_uliqZ2_8ecgcKm0pWAAFtN88t7ehVQ