如何收集和使用您的個人信息
對未成年人的保護
與第三方共享
第三方MCPSever
管理您的個人信息
信息存儲地點及期限
開發者自定義章節
如何聯系我們
隱私政策生效日期
本文參考鴻蒙官方文檔
發表于 02-03 15:54
美議員提議禁止玩具內置AI聊天 ? 據外媒報道,美國加州州參議員史蒂夫?帕迪利亞提出一項新法案,計劃在未來四年內禁止面向未成年人的AI聊天機器人玩具上市和生產,從而為監管部門建立兒童保護機制爭取時間
發表于 01-07 16:33
?393次閱讀
年齡分級作為元服務的重要屬性,在華為應用市場的應用詳情頁展示給用戶,幫助用戶找到適合其年齡段的元服務,從而為未成年人用戶打造純凈的使用環境。
1.AGC提供了調查問卷,根據您回答的內容,自動生成年
發表于 11-21 11:29
北京沃華慧通測控技術有限公司的產品和解決方案,已成功服務于眾多國家級重點實驗室、高校科研機構、大型國有企業及高端制造廠商,贏得了廣泛的贊譽和信賴。無論是在前沿的新材料研發,還是在嚴苛的生產線質量控制中,沃華慧通的試驗機都在默默貢
發表于 11-05 09:25
?644次閱讀
今日,寶馬(南京)信息技術有限公司在南京正式“掛牌運行”。這家華晨寶馬全資子公司由領悅數字信息技術有限公司南京分公司“迭代”而來,代表著一次里程碑式的“進化”。這次升級不僅加速了寶馬在
發表于 10-29 15:17
?617次閱讀
為突破國產算力自主核心技術瓶頸,共筑可控的智能算力生態體系,9月29日,上海燧弘華創科技有限公司(以下簡稱“燧弘華創”)與銳捷網絡股份有限公司(以下簡稱“銳捷
發表于 10-11 17:26
?1597次閱讀
阜陽欣奕華制藥科技有限公司自2017年5月成立以來,已在制藥領域嶄露頭角。公司坐落于阜陽市太和縣經濟開發區,坐擁2.285億元注冊資金,專注于特色醫藥中間體和原料藥的研發、生產與銷售,同時提供CMO
發表于 08-29 09:23
?663次閱讀
近日,位于太倉智匯谷·科技創新園的蘇州多感科技有限公司(以下簡稱“多感科技”)宣布成功完成數千萬元戰略輪融資,參與投資的機構包括安徽國控資本、新微資本。此次融資的達成,表明多感科技在極
發表于 07-22 19:43
?916次閱讀
近日,佛吉亞中國與廣汽零部件有限公司旗下的廣州華望半導體科技有限公司在廣州舉行合資合同簽署儀式。佛瑞亞集團座椅事業部執行副總裁Stéphan
發表于 07-09 15:02
?1097次閱讀
在陽光明媚、充滿希望的日子里,上海和晟儀器科技有限公司迎來了新廠開工的盛大時刻,這不僅是公司發展歷程中的一個重要里程碑,更是儀器儀表制造行業的一大盛事。?上海和晟儀器科技有限公司新廠開工大吉自
發表于 06-09 10:27
?891次閱讀
智能制造的大潮中,越來越多的企業開始意識到,通過數字化轉型提升生產效率、保障產品質量已成為不可逆轉的趨勢。江淮華霆(安徽江淮華霆電池系統有限公司),作為汽車制造行業的佼佼者,深知這一道理,并積極尋求
發表于 05-21 11:33
?548次閱讀
湖南銀河電氣有限公司產品應用案例
發表于 04-23 11:21
?0次下載
近日,廣州昊毅新材料科技股份有限公司是一家專注于新型功能性高分子材料的研發與應用企業,尤其在聚氨酯功能材料領域擁有深厚的技術積累和創新能力。近日,該公司選購了我司的熱重分析儀及差示掃描量熱儀。這一
發表于 04-21 09:15
?819次閱讀
一、概述
通過訂閱用戶信息變更,您可以接收有關用戶及其賬戶的重要更新。當用戶取消元服務的授權信息、注銷華為賬號時,華為賬號服務器會發送通知到元服務,元服務可以根據通知消息進行自身業務處理。
二、用戶信息變更事件介紹
三、訂閱用戶信息變更
訂閱步驟如下:
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
。Account Kit提供的SampleCode示例工程體現了Account Kit提供的登錄、授權頭像昵稱、快速驗證手機號、收貨地址、發票抬頭、未成年人模式等特性,可參考該工程進行應用的相關內容開發。
一
發表于 03-31 12:08
評論