近日,佛吉亞中國與廣汽零部件有限公司旗下的廣州華望半導(dǎo)體科技有限公司在廣州舉行合資合同簽署儀式。佛瑞亞集團座椅事業(yè)部執(zhí)行副總裁Stéphan
發(fā)表于 07-09 15:02
?188次閱讀
近日,中國華電集團有限公司四川分公司(以下簡稱“華電四川公司”)與華為技術(shù)有限公司(以下簡稱“華為”)在深圳簽署戰(zhàn)略合作協(xié)議。
發(fā)表于 07-04 11:22
?382次閱讀
在陽光明媚、充滿希望的日子里,上海和晟儀器科技有限公司迎來了新廠開工的盛大時刻,這不僅是公司發(fā)展歷程中的一個重要里程碑,更是儀器儀表制造行業(yè)的一大盛事。?上海和晟儀器科技有限公司新廠開工大吉自
發(fā)表于 06-09 10:27
?431次閱讀
智能制造的大潮中,越來越多的企業(yè)開始意識到,通過數(shù)字化轉(zhuǎn)型提升生產(chǎn)效率、保障產(chǎn)品質(zhì)量已成為不可逆轉(zhuǎn)的趨勢。江淮華霆(安徽江淮華霆電池系統(tǒng)有限公司),作為汽車制造行業(yè)的佼佼者,深知這一道理,并積極尋求
發(fā)表于 05-21 11:33
?170次閱讀
近日,杭州晶華微電子股份有限公司(股票代碼:688130)戰(zhàn)略版圖再添新章,成都分公司正式成立。公司董事長呂漢泉先生、總經(jīng)理梁桂武先生、副總經(jīng)理紀(jì)臻女士等高管蒞臨現(xiàn)場,與成都分
發(fā)表于 05-10 09:24
?368次閱讀
湖南銀河電氣有限公司產(chǎn)品應(yīng)用案例
發(fā)表于 04-23 11:21
?0次下載
近日,廣州昊毅新材料科技股份有限公司是一家專注于新型功能性高分子材料的研發(fā)與應(yīng)用企業(yè),尤其在聚氨酯功能材料領(lǐng)域擁有深厚的技術(shù)積累和創(chuàng)新能力。近日,該公司選購了我司的熱重分析儀及差示掃描量熱儀。這一
發(fā)表于 04-21 09:15
?367次閱讀
一、概述
通過訂閱用戶信息變更,您可以接收有關(guān)用戶及其賬戶的重要更新。當(dāng)用戶取消元服務(wù)的授權(quán)信息、注銷華為賬號時,華為賬號服務(wù)器會發(fā)送通知到元服務(wù),元服務(wù)可以根據(jù)通知消息進行自身業(yè)務(wù)處理。
二、用戶信息變更事件介紹
三、訂閱用戶信息變更
訂閱步驟如下:
1.登錄華為開發(fā)者聯(lián)盟,選擇“管理中心 > API服務(wù) > API庫”。
2.在App Services找到RISC。
3.點擊啟用按鈕,選擇您的項目,點擊確定。
4.點擊訂閱通知按鈕,在彈窗中配置回調(diào)地址及訂閱范圍。
說明
回調(diào)地址:在開啟訂閱通知后,若華為用戶信息存在變更,會通過發(fā)送消息到該地址。
訂閱范圍:訂閱的用戶信息變更事件,詳見用戶信息變更事件介紹。
四、處理通知消息
華為賬號服務(wù)器向元服務(wù)投遞消息。元服務(wù)接收到消息后需要先對消息頭中的令牌進行驗簽,確保消息的完整有效性后解析并獲取用戶信息變更事件詳情。具體步驟如下:
1.驗證消息頭中的令牌簽名。
您可通過任何JWT庫(例如:jwt.io)對其進行解析與驗證。
無論使用哪種庫,您均需完成如下操作:
調(diào)用接口(https://risc.cloud.huawei.com/v1beta/public/risc/.well-known/risc-configuration),獲取發(fā)行者標(biāo)識(issuer)與簽名密鑰證書URI(jwks_uri)。
通過依賴的JWT庫,對消息頭中的令牌進行解析,獲取簽名的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)) {
// 驗簽失敗,進行自己邏輯處理
} 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);
}
};
// 驗證并解析消息內(nèi)容
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) {
// 其他異常,業(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
近日,大族機器人在官方渠道發(fā)布改名公開信,“深圳市大族機器人有限公司”正式更名為“廣東華沿機器人有限公司”(以下簡稱“華沿機器
發(fā)表于 04-02 14:22
?730次閱讀
。Account Kit提供的SampleCode示例工程體現(xiàn)了Account Kit提供的登錄、授權(quán)頭像昵稱、快速驗證手機號、收貨地址、發(fā)票抬頭、未成年人模式等特性,可參考該工程進行應(yīng)用的相關(guān)內(nèi)容開發(fā)。
一
發(fā)表于 03-31 12:08
北京貞光管理咨詢服務(wù)有限公司創(chuàng)始人、董事長梅華近日接受《中華工商時報》專訪,就電子元器件行業(yè)發(fā)展及構(gòu)建完備產(chǎn)業(yè)鏈等問題,分享了他的獨到見解。
發(fā)表于 02-24 17:07
?530次閱讀
之一。 樂淵網(wǎng)絡(luò)科技(上海)有限公司成立于2013年11月,法定代表人為宋廣慧,注冊資本約為807萬人民幣。作為“AIDONG SPORT”的關(guān)聯(lián)公司,樂淵
發(fā)表于 01-03 10:56
?692次閱讀
據(jù)外媒報道;歐洲監(jiān)管機構(gòu)認為Meta和谷歌的一個廣告營銷項目違反了谷歌公司制定的禁止向未成年人投放個性化廣告的規(guī)則,目前已經(jīng)被歐盟委員會(European Commission)官員調(diào)查。歐洲監(jiān)管
發(fā)表于 12-11 16:10
?541次閱讀
近日,光莆股份全資子公司——光莆(香港)有限公司隆重舉行開業(yè)慶典。廈門大學(xué)旅港校友會、東南大學(xué)香港校友會、東南大學(xué)深圳校友會、廈門大學(xué)廈門校友會金融分會等優(yōu)秀校友代表,及華夏天侖資本、中信建投國際
發(fā)表于 11-13 11:30
?662次閱讀
南京盾華電子科技有限公司全球智慧路燈燈桿源頭供應(yīng)商
發(fā)表于 10-10 09:11
?771次閱讀
評論