2025年世界物联网大会·工业互联网论坛于11月28日下午在北京海淀区中关村展示中心隆重举行。本次论坛由世界物联网大会组委会主办,中电工业互联网
发表于 12-05 08:58
•340次阅读
在智能互联网深度渗透的今天,产业科技融合不再是抽象概念,而是需要坚实的硬件底座作为支撑。当5G、人工智能、大数据技术重塑产业边界,智能互联网推动各行各业从“数字化”向“智能化”跨越,而“算力”成为核心生产要素,主板作为硬件生态的
发表于 11-25 09:27
•174次阅读
年龄分级作为元服务的重要属性,在华为应用市场的应用详情页展示给用户,帮助用户找到适合其年龄段的元服务,从而为未成年人用户打造纯净的使用环境。
1.AGC提供了调查问卷,根据您回答的内容,自动生成年
发表于 11-21 11:29
互联网通过提升生产效率、优化资源配置,成为经济增长的新动能。据预测,到2030年,全球工业互联网经济价值将达到15万亿美元,影响全球一半的经济规模;中国工业
发表于 11-20 09:51
•200次阅读
继去年在世界互联网大会凭借终端计算子系统荣获“领先科技奖”后,Arm 今年再获行业认可。11 月 7 日,通过在可持续发展领域的显著成果,Arm 荣膺本届世界互联网大会“杰出贡献奖”,与联想、腾讯等
发表于 11-07 17:30
•593次阅读
截至2025年,中国工业互联网平台的数字化进程已进入规模化发展新阶段,核心指标呈现以下特征 : 一、基础能力覆盖:全要素互联与全链条渗透 设
发表于 09-01 11:38
•670次阅读
年领跑中国银行业互联网金融领域,在互联网金融服务类解决方案市场蝉联榜首。在细分领域,互联网银行解决方案子市场、互联网贷款解决方案子市场分别斩
发表于 07-07 12:37
•937次阅读
,人们才会更加信任和接受物联网技术。
综上所述,物联网行业的未来发展趋势非常广阔。智能家居、工业互联网、智慧城市、医疗保健以及数据安全和隐私保护都将成为物联网行业的热点领域。我们有理
发表于 06-09 15:25
Thread 是专门为 loT 设备提供无线网状网络通信的协议,由三星、ARM、Nest 三家企业共同推出。为了加速 Thread 协议普及,多家公司于2014年7月组成 \"Thread
发表于 04-26 23:17
一、概述
通过订阅用户信息变更,您可以接收有关用户及其账户的重要更新。当用户取消元服务的授权信息、注销华为账号时,华为账号服务器会发送通知到元服务,元服务可以根据通知消息进行自身业务处理。
二、用户信息变更事件介绍
三、订阅用户信息变更
订阅步骤如下:
1.登录华为开发者联盟,选择“管理中心 > API服务 > API库”。
2.在App Services找到RISC。
3.点击启用按钮,选择您的项目,点击确定。
4.点击订阅通知按钮,在弹窗中配置回调地址及订阅范围。
说明
回调地址:在开启订阅通知后,若华为用户信息存在变更,会通过发送消息到该地址。
订阅范围:订阅的用户信息变更事件,详见用户信息变更事件介绍。
四、处理通知消息
华为账号服务器向元服务投递消息。元服务接收到消息后需要先对消息头中的令牌进行验签,确保消息的完整有效性后解析并获取用户信息变更事件详情。具体步骤如下:
1.验证消息头中的令牌签名。
您可通过任何JWT库(例如:jwt.io)对其进行解析与验证。
无论使用哪种库,您均需完成如下操作:
调用接口(https://risc.cloud.huawei.com/v1beta/public/risc/.well-known/risc-configuration),获取发行者标识(issuer)与签名密钥证书URI(jwks_uri)。
通过依赖的JWT库,对消息头中的令牌进行解析,获取签名的KeyId。
通过签名的KeyId,从签名密钥证书URI中获取到JWT签名的公钥。
校验JWT签名中的aud与订阅用户信息变更中提供的Client ID一致。
校验JWT签名中的issuer与发行者标识(issuer)一致。
具体验签逻辑,请参考如下示例代码:
Maven依赖配置
<dependencies>
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>2.9.3</version> <!--此处替换为您项目需要的版本-->
</dependency>
<dependency>
<groupId>com.auth0</groupId>
<artifactId>jwks-rsa</artifactId>
<version>0.21.2</version> <!--此处替换为您项目需要的版本-->
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.11.5</version> <!--此处替换为您项目需要的版本-->
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>0.11.5</version> <!--此处替换为您项目需要的版本-->
</dependency>
</dependencies>
Java验签代码示例
import com.auth0.jwk.JwkProvider;
import com.auth0.jwk.UrlJwkProvider;
import com.github.benmanes.caffeine.cache.CacheLoader;
import com.github.benmanes.caffeine.cache.Caffeine;
import com.github.benmanes.caffeine.cache.LoadingCache;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Header;
import io.jsonwebtoken.IncorrectClaimException;
import io.jsonwebtoken.JwsHeader;
import io.jsonwebtoken.Jwt;
import io.jsonwebtoken.JwtParser;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SigningKeyResolver;
import io.jsonwebtoken.security.SignatureException;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.Key;
import java.security.PublicKey;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
public class RiscDemo {
public static void main(String[] args) {
// 消息请求头中Authorization: Bearer <token>中的<token>
String token = \"
<token>
\";
// Client ID
String clientId = \"
<Client ID>
\";
Jwt<?, Object> jwt = validateSecurityEventToken(token, clientId);
if (Objects.isNull(jwt)) {
// 验签失败,进行自己逻辑处理
} else {
// 验签成功,进行自己逻辑处理
}
}
/**
* 对Authorization头域中的token进行验签
*
* @param token 消息请求头中Authorization: Bearer <token>中的<token>
* @param clientId Client ID
*
* @Return 返回为null,则表示验签失败,否则表示验证成功
*/
public static <H extends Header<H>, B> Jwt<H, B> validateSecurityEventToken(String token, String clientId) {
Jwt<H, B> jwt = null;
try {
/**
* 公开配置信息地址:https://risc.cloud.huawei.com/v1beta/public/risc/.well-known/risc-configuration
* 公开配置信息中的issuer值
*/
String issuer = \"id.cloud.huawei.com\";
// 公开配置信息中的jwks_uri值
String jwksUri = \"https://risc.cloud.huawei.com/v1beta/public/risc/certs\";
// 获取公钥信息
JwkProvider huaweiCerts = new UrlJwkProvider(new URL(jwksUri), null, null);
LoadingCache<String, PublicKey> cache = Caffeine.newBuilder()
.expireAfterWrite(1, TimeUnit.DAYS)
.build(new CacheLoader<String, PublicKey>() {
@Override
public @Nullable PublicKey load(@NonNull String key) throws Exception {
return huaweiCerts.get(key).getPublicKey();
}
});
SigningKeyResolver signingKeyResolver = new SigningKeyResolver() {
private PublicKey getPublicKey(JwsHeader<?> jwsHeader) {
try {
return cache.get(jwsHeader.getKeyId());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@Override
public Key resolveSigningKey(JwsHeader jwsHeader, Claims claims) {
return getPublicKey(jwsHeader);
}
@Override
public Key resolveSigningKey(JwsHeader jwsHeader, String s) {
return getPublicKey(jwsHeader);
}
};
// 验证并解析消息内容
JwtParser parser = Jwts.parserBuilder()
.requireIssuer(issuer)
.requireAudience(clientId)
.setAllowedClockSkewSeconds(60)
.setSigningKeyResolver(signingKeyResolver)
.build();
jwt = parser.parse(token);
} catch (IncorrectClaimException e) {
// 消息的claim无效,针对异常进行处理(如:日志记录)
e.printStackTrace();
} catch (SignatureException e) {
// 验签失败,针对异常进行处理(如:日志记录)
e.printStackTrace();
} catch (MalformedURLException e) {
// 无效的jwksUri,检查传入的jwksUri是否与https://risc.cloud.huawei.com/v1beta/public/risc/.well-known/risc-configuration返回jwks_uri一致
e.printStackTrace();
} catch (Exception e) {
// 其他异常,业务自行处理
e.printStackTrace();
}
return jwt;
}
}
2.处理消息体。
消息体格式如下
{
\"aud\": \"<
开发者Client ID
>\",
\"iss\": \"id.cloud.huawei.com\",
\"iat\": 1727619834,
\"jti\": \"6672ed7d5c5e4c3c92f343ecac40f326\",
\"events\": {
\"https://schemas.openid.net/secevent/risc/event-type/account-purged\": {
\"subject\": {
\"sub\": \"<
触发事件用户的UnionID
>\",
\"subject_type\": \"iss_sub\",
\"extra\": \"<
触发事件用户的OpenID
>\",
\"iss\": \"id.cloud.huawei.com\"
}
}
}
}
其中,各字段含义如下:
本文主要引用参考HarmonyOS官方网站
发表于 04-16 17:43
、能力范围
登录:提供登录服务,让用户使用华为账号快速登录元服务。
获取华为账号用户信息:获取用户的基本开放信息,如头像、手机号、收货地址、发票抬头。
未成年人模式:获取未成年人模式的开启状态及年龄段
发表于 03-31 12:08
云互联网,通常称为云计算,是一种基于互联网的计算模式,它允许用户通过网络访问和使用远程服务器上的存储、管理和处理数据的资源。主机推荐小编为您整理发布云互联网的详细解释。
发表于 01-07 09:50
•1032次阅读
近日,内容分发网络服务商Cloudflare发布了其年度互联网流量趋势报告,揭示了2024年全球互联网流量的关键变化和持续趋势。 据报告显示,今年全球
发表于 12-18 11:00
•1306次阅读
中信证券近日发布的研报指出,2025年互联网板块整体向上发展的机遇明显大于向下的风险。当前,互联网板块正处于业绩预期、估值及外资持股比例均处于历史低位的阶段,这为投资者提供了较为有利的入场时机
发表于 12-17 14:22
•1058次阅读
北京时间12月16日18时,我国在海南文昌卫星发射中心成功实施了一次重要的航天发射任务。此次发射使用了长征五号乙运载火箭,以一箭10星的方式将卫星互联网低轨01组卫星成功送入预定轨道,标志着发射任务
发表于 12-17 11:06
•1092次阅读
评论