如何收集和使用您的個人信息
對未成年人的保護(hù)
與第三方共享
第三方MCPSever
管理您的個人信息
信息存儲地點及期限
開發(fā)者自定義章節(jié)
如何聯(lián)系我們
隱私政策生效日期
本文參考鴻蒙官方文檔
發(fā)表于 02-03 15:54
2025年末,國家發(fā)展改革委、財政部聯(lián)合印發(fā)《關(guān)于2026年實施大規(guī)模設(shè)備更新和消費品以舊換新政策的通知》,明確將智能眼鏡正式納入數(shù)碼和智能產(chǎn)品購新補(bǔ)貼范圍,按產(chǎn)品售價15%補(bǔ)貼、單件最高500元的政策紅利。不僅為智能眼鏡行業(yè)按
發(fā)表于 01-15 11:20
?549次閱讀
近日,國家市場監(jiān)督管理總局、國家標(biāo)準(zhǔn)化管理委員會以及工業(yè)和信息化部相繼發(fā)布多項國家標(biāo)準(zhǔn)、行業(yè)計量技術(shù)規(guī)范,其中廣電計量參與編寫1項國家標(biāo)準(zhǔn)、
發(fā)表于 01-13 09:41
?529次閱讀
12月9日,廣電計量與印尼國家標(biāo)準(zhǔn)局(BSN)在印尼雅加達(dá)簽署諒解備忘錄,并就相關(guān)合作內(nèi)容進(jìn)行了探討交流。印尼國家標(biāo)準(zhǔn)局常務(wù)副局長、秘書長Donny Purnomo,印尼國家標(biāo)準(zhǔn)局認(rèn)證
發(fā)表于 12-23 10:38
?275次閱讀
眾多周知,建筑工地的工人來源地廣泛,人力管理難度較大,不少地方已提出智慧工地引入實名制考勤門禁,包括引入人臉門禁識別一體機(jī)、人臉識別門禁終端、刷臉考勤機(jī)等實名制身份識別一體機(jī),對進(jìn)出工地人員進(jìn)行實名
發(fā)表于 10-31 09:40
?434次閱讀
隨著國家發(fā)改委136號文的全面實施,新能源電站價值評估體系正經(jīng)歷深刻變革。新政策要求風(fēng)電、光伏等新能源電量全量進(jìn)入電力市場,電價完全由交易形成。
發(fā)表于 07-21 09:59
?1834次閱讀
)的上網(wǎng)電價原則上需通過市場交易形成,上網(wǎng)電價由市場供需決定,企業(yè)可選擇“報量報價”參與交易或接受統(tǒng)一的電力市場價格,徹底脫離政策的補(bǔ)貼依賴。在此新政策的影響下,
發(fā)表于 07-18 11:45
?2020次閱讀
近日,廣州某酒店就收到一則罰單,也是首張“違反反恐法被處罰款”的罰單。到底該酒店是違反了什么法律法規(guī)呢?眾所周知,入住酒店旅館都需要進(jìn)行實名制登記,以便及時發(fā)現(xiàn)安全隱患。通過身份證或人臉識別進(jìn)行
發(fā)表于 05-21 10:31
?766次閱讀
在人工智能技術(shù)蓬勃發(fā)展、消費品以舊換新政策等利好驅(qū)動下,LED行業(yè)正迎來技術(shù)迭代提速與政策紅利釋放的疊加機(jī)遇期。國星光電緊抓機(jī)遇,加速科技突圍,深耕新型顯示技術(shù),推動五大顯示場景全面開花。
發(fā)表于 05-16 11:44
?941次閱讀
隨著2025年國家新能源政策的密集出臺,分布式光伏行業(yè)迎來了關(guān)鍵的政策窗口期——“430”和“531”節(jié)點。新政對分布式光伏項目的備案流程、消納條件和收益模式提出了更高要求,尤其是“5
發(fā)表于 05-07 16:11
?785次閱讀
新政后IRR可能下降,但通過精細(xì)化管理和技術(shù)手段(如負(fù)荷預(yù)測、設(shè)備能效優(yōu)化),仍可維持較高收益水平。
安科瑞的解決方案不僅幫助企業(yè)在政策窗口期搶占先機(jī),還通過智能化管理適應(yīng)新政要求,實現(xiàn)從“
發(fā)表于 05-07 16:10
?702次閱讀
一、概述
通過訂閱用戶信息變更,您可以接收有關(guān)用戶及其賬戶的重要更新。當(dāng)用戶取消元服務(wù)的授權(quán)信息、注銷華為賬號時,華為賬號服務(wù)器會發(fā)送通知到元服務(wù),元服務(wù)可以根據(jù)通知消息進(jìn)行自身業(yè)務(wù)處理。
二、用戶信息變更事件介紹
三、訂閱用戶信息變更
訂閱步驟如下:
1.登錄華為開發(fā)者聯(lián)盟,選擇“管理中心 > API服務(wù) > API庫”。
2.在App Services找到RISC。
3.點擊啟用按鈕,選擇您的項目,點擊確定。
4.點擊訂閱通知按鈕,在彈窗中配置回調(diào)地址及訂閱范圍。
說明
回調(diào)地址:在開啟訂閱通知后,若華為用戶信息存在變更,會通過發(fā)送消息到該地址。
訂閱范圍:訂閱的用戶信息變更事件,詳見用戶信息變更事件介紹。
四、處理通知消息
華為賬號服務(wù)器向元服務(wù)投遞消息。元服務(wù)接收到消息后需要先對消息頭中的令牌進(jìn)行驗簽,確保消息的完整有效性后解析并獲取用戶信息變更事件詳情。具體步驟如下:
1.驗證消息頭中的令牌簽名。
您可通過任何JWT庫(例如:jwt.io)對其進(jìn)行解析與驗證。
無論使用哪種庫,您均需完成如下操作:
調(diào)用接口(https://risc.cloud.huawei.com/v1beta/public/risc/.well-known/risc-configuration),獲取發(fā)行者標(biāo)識(issuer)與簽名密鑰證書URI(jwks_uri)。
通過依賴的JWT庫,對消息頭中的令牌進(jìn)行解析,獲取簽名的KeyId。
通過簽名的KeyId,從簽名密鑰證書URI中獲取到JWT簽名的公鑰。
校驗JWT簽名中的aud與訂閱用戶信息變更中提供的Client ID一致。
校驗JWT簽名中的issuer與發(fā)行者標(biāo)識(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)) {
// 驗簽失敗,進(jìn)行自己邏輯處理
} else {
// 驗簽成功,進(jìn)行自己邏輯處理
}
}
/**
* 對Authorization頭域中的token進(jìn)行驗簽
*
* @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);
}
};
// 驗證并解析消息內(nèi)容
JwtParser parser = Jwts.parserBuilder()
.requireIssuer(issuer)
.requireAudience(clientId)
.setAllowedClockSkewSeconds(60)
.setSigningKeyResolver(signingKeyResolver)
.build();
jwt = parser.parse(token);
} catch (IncorrectClaimException e) {
// 消息的claim無效,針對異常進(jìn)行處理(如:日志記錄)
e.printStackTrace();
} catch (SignatureException e) {
// 驗簽失敗,針對異常進(jìn)行處理(如:日志記錄)
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) {
// 其他異常,業(yè)務(wù)自行處理
e.printStackTrace();
}
return jwt;
}
}
2.處理消息體。
消息體格式如下
{
\"aud\": \"<
開發(fā)者Client ID
>\",
\"iss\": \"id.cloud.huawei.com\",
\"iat\": 1727619834,
\"jti\": \"6672ed7d5c5e4c3c92f343ecac40f326\",
\"events\": {
\"https://schemas.openid.net/secevent/risc/event-type/account-purged\": {
\"subject\": {
\"sub\": \"<
觸發(fā)事件用戶的UnionID
>\",
\"subject_type\": \"iss_sub\",
\"extra\": \"<
觸發(fā)事件用戶的OpenID
>\",
\"iss\": \"id.cloud.huawei.com\"
}
}
}
}
其中,各字段含義如下:
本文主要引用參考HarmonyOS官方網(wǎng)站
發(fā)表于 04-16 17:43
,為了杜絕“黃牛賣票”的現(xiàn)象,一些演唱會也采用實名制方式進(jìn)行驗票。通過身份證識別終端來識別身份證人和進(jìn)場的人是不是同一個。但這種實名制驗票方式也容易出現(xiàn)漏洞,有人拿著黃牛
發(fā)表于 04-10 15:35
?1070次閱讀
01政策驅(qū)動,智能監(jiān)測成合規(guī)剛需化工生產(chǎn)設(shè)備的高風(fēng)險性對安全管理提出嚴(yán)苛要求。應(yīng)急管理部在《2025年危險化學(xué)品安全監(jiān)管工作要點》(征求意見稿)中明確要求,涉及壓縮機(jī)、高危泵等關(guān)鍵機(jī)泵的重大危險源
發(fā)表于 04-01 11:52
?1150次閱讀
。Account Kit提供的SampleCode示例工程體現(xiàn)了Account Kit提供的登錄、授權(quán)頭像昵稱、快速驗證手機(jī)號、收貨地址、發(fā)票抬頭、未成年人模式等特性,可參考該工程進(jìn)行應(yīng)用的相關(guān)內(nèi)容開發(fā)。
一
發(fā)表于 03-31 12:08
評論