智能制造的大潮中,越來越多的企業開始意識到,通過數字化轉型提升生產效率、保障產品質量已成為不可逆轉的趨勢。江淮華霆(安徽江淮華霆電池系統有限公司),作為汽車制造行業的佼佼者,深知這一道理,并積極尋求
發表于 05-21 11:33
?45次閱讀
近日,杭州晶華微電子股份有限公司(股票代碼:688130)戰略版圖再添新章,成都分公司正式成立。公司董事長呂漢泉先生、總經理梁桂武先生、副總經理紀臻女士等高管蒞臨現場,與成都分
發表于 05-10 09:24
?211次閱讀
湖南銀河電氣有限公司產品應用案例
發表于 04-23 11:21
?0次下載
近日,廣州昊毅新材料科技股份有限公司是一家專注于新型功能性高分子材料的研發與應用企業,尤其在聚氨酯功能材料領域擁有深厚的技術積累和創新能力。近日,該公司選購了我司的熱重分析儀及差示掃描量熱儀。這一
發表于 04-21 09:15
?234次閱讀
一、概述
通過訂閱用戶信息變更,您可以接收有關用戶及其賬戶的重要更新。當用戶取消元服務的授權信息、注銷華為賬號時,華為賬號服務器會發送通知到元服務,元服務可以根據通知消息進行自身業務處理。
二、用戶信息變更事件介紹
三、訂閱用戶信息變更
訂閱步驟如下:
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
近日,大族機器人在官方渠道發布改名公開信,“深圳市大族機器人有限公司”正式更名為“廣東華沿機器人有限公司”(以下簡稱“華沿機器
發表于 04-02 14:22
?463次閱讀
。Account Kit提供的SampleCode示例工程體現了Account Kit提供的登錄、授權頭像昵稱、快速驗證手機號、收貨地址、發票抬頭、未成年人模式等特性,可參考該工程進行應用的相關內容開發。
一
發表于 03-31 12:08
北京貞光管理咨詢服務有限公司創始人、董事長梅華近日接受《中華工商時報》專訪,就電子元器件行業發展及構建完備產業鏈等問題,分享了他的獨到見解。
發表于 02-24 17:07
?462次閱讀
近日,廣東省工業和信息化廳公布了第23批省級企業技術中心的認定名單,佛山華數機器人有限公司(以下簡稱“華數機器人”)順利通過認定,獲評“廣東
發表于 01-08 09:23
?443次閱讀
之一。 樂淵網絡科技(上海)有限公司成立于2013年11月,法定代表人為宋廣慧,注冊資本約為807萬人民幣。作為“AIDONG SPORT”的關聯公司,樂淵
發表于 01-03 10:56
?555次閱讀
據外媒報道;歐洲監管機構認為Meta和谷歌的一個廣告營銷項目違反了谷歌公司制定的禁止向未成年人投放個性化廣告的規則,目前已經被歐盟委員會(European Commission)官員調查。歐洲監管
發表于 12-11 16:10
?483次閱讀
近日,光莆股份全資子公司——光莆(香港)有限公司隆重舉行開業慶典。廈門大學旅港校友會、東南大學香港校友會、東南大學深圳校友會、廈門大學廈門校友會金融分會等優秀校友代表,及華夏天侖資本、中信建投國際
發表于 11-13 11:30
?568次閱讀
南京盾華電子科技有限公司全球智慧路燈燈桿源頭供應商
發表于 10-10 09:11
?657次閱讀
7月,“暢游山海,樂享西游”2024第25屆連云港之夏旅游節開幕,市長邢正軍出席開幕式并致辭。現場開展了連云港市產業和投資環境推介活動,易華錄與連云港大數據產業發展有限公司達成戰略合作,易華錄副總裁
發表于 07-09 16:15
?969次閱讀
芯百特微電子(無錫)有限公司創始人張海濤首先發言,表達了對在場嘉賓的深深感激。他介紹,成都子公司成立于2023年,是芯百特微電子(無錫)有限公司的分支機構,專注于高性能射頻前端芯片的研
發表于 05-23 08:47
?887次閱讀
評論