年領跑中國銀行業互聯網金融領域,在互聯網金融服務類解決方案市場蟬聯榜首。在細分領域,互聯網銀行解決方案子市場、互聯網貸款解決方案子市場分別斬
發表于 07-07 12:37
?358次閱讀
,人們才會更加信任和接受物聯網技術。
綜上所述,物聯網行業的未來發展趨勢非常廣闊。智能家居、工業互聯網、智慧城市、醫療保健以及數據安全和隱私保護都將成為物聯網行業的熱點領域。我們有理
發表于 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
?591次閱讀
近日,內容分發網絡服務商Cloudflare發布了其年度互聯網流量趨勢報告,揭示了2024年全球互聯網流量的關鍵變化和持續趨勢。 據報告顯示,今年全球
發表于 12-18 11:00
?887次閱讀
中信證券近日發布的研報指出,2025年互聯網板塊整體向上發展的機遇明顯大于向下的風險。當前,互聯網板塊正處于業績預期、估值及外資持股比例均處于歷史低位的階段,這為投資者提供了較為有利的入場時機
發表于 12-17 14:22
?736次閱讀
北京時間12月16日18時,我國在海南文昌衛星發射中心成功實施了一次重要的航天發射任務。此次發射使用了長征五號乙運載火箭,以一箭10星的方式將衛星互聯網低軌01組衛星成功送入預定軌道,標志著發射任務
發表于 12-17 11:06
?775次閱讀
喜訊!華秋榮獲億邦動力2024產業互聯網千峰獎·數字供應鏈!這是華秋連續第五年獲此榮譽。12月6日晚,在“2024億邦產業互聯網峰會——千峰之夜”頒獎晚宴上,在一百余位產業互聯網企業決
發表于 12-12 18:17
?637次閱讀
據外媒報道;歐洲監管機構認為Meta和谷歌的一個廣告營銷項目違反了谷歌公司制定的禁止向未成年人投放個性化廣告的規則,目前已經被歐盟委員會(European Commission)官員調查。歐洲監管
發表于 12-11 16:10
?541次閱讀
發展大會上首次提出。概括起來就是在現有的互聯網上挖掘潛力,賦予其新的能力和內涵,以此推動IPv6的持續創新,并通過IPv6新質,賦能互聯網新質。新質
發表于 12-10 11:01
?693次閱讀
的是,百度智能云在本次評價中表現突出,榮獲A級工業互聯網“雙跨”平臺企業稱號。這不僅是對百度智能云在工業互聯網領域技術實力和創新能力的高度認可,也標志著百度智能云成為唯一獲評A級的
發表于 11-11 13:53
?638次閱讀
。大力發展基于IPv6的下一代互聯網,有助于提升我國網絡信息技術自主創新能力和產業高端發展水平。IPv6能夠高效支撐移動互聯網、物聯網、工業
發表于 10-09 13:37
?1039次閱讀
生命周期軟件服務體系,連續三年蟬聯互聯網金融服務類解決方案市場占有率第一。在細分領域:互聯網銀行解決方案子市場更是連續四年霸榜第一,
發表于 07-19 14:51
?1871次閱讀
評論