10月14日,蘋果公司COO(首席運營官)Sabih Khan走訪了瑞聲科技位于江蘇常州的均熱板模組生產(chǎn)工廠,參觀了首條全自動化的超薄均熱板生產(chǎn)線。
發(fā)表于 10-17 15:37
?268次閱讀
給大家?guī)硪恍┬袠I(yè)資訊: 蘋果不是美國最賺錢公司了 現(xiàn)在蘋果公司已經(jīng)不是美國最賺錢公司了;根據(jù)《財富》雜志發(fā)布的2025年美國500強排行榜榜單數(shù)據(jù)
發(fā)表于 06-03 15:29
?450次閱讀
據(jù)外媒報道,蘋果公司正研發(fā)用于AI服務(wù)器的專用芯片;據(jù)蘋果公司知情人士透露;蘋果芯片設(shè)計團隊正在加速研發(fā)新芯片,面向的主要領(lǐng)域包括智能眼鏡芯片、功能更強大的Mac電腦芯片以及AI服務(wù)器專用芯片
發(fā)表于 05-09 11:25
?811次閱讀
一、概述
通過訂閱用戶信息變更,您可以接收有關(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
。Account Kit提供的SampleCode示例工程體現(xiàn)了Account Kit提供的登錄、授權(quán)頭像昵稱、快速驗證手機號、收貨地址、發(fā)票抬頭、未成年人模式等特性,可參考該工程進行應(yīng)用的相關(guān)內(nèi)容開發(fā)。
一
發(fā)表于 03-31 12:08
或者因為受到蘋果公司在2024年第四季度中國市場表現(xiàn)不佳,iPhone銷量同比下滑18.2%的不利影響,而且華爾街機構(gòu)Jefferies和Loop Capital均下調(diào)蘋果評級;Jefferies
發(fā)表于 01-22 15:39
?722次閱讀
近日,有公開信息顯示,蘋果技術(shù)開發(fā)(上海)有限公司已經(jīng)正式成立。該公司注冊資本為3500萬美元,涵蓋了多項業(yè)務(wù)領(lǐng)域,其中主要包括軟件開發(fā)、大數(shù)據(jù)服務(wù)、
發(fā)表于 01-13 14:36
?851次閱讀
給大家?guī)韮蓚€蘋果公司的新消息: 蘋果補繳近110億歐元欠稅? 在愛爾蘭;蘋果公司持續(xù)八年時間的稅務(wù)訴訟畫下句號,蘋果補繳近110億歐元欠稅 。 在2024年9月,歐洲法院裁定
發(fā)表于 01-08 16:35
?1078次閱讀
據(jù)外媒報道;歐洲監(jiān)管機構(gòu)認(rèn)為Meta和谷歌的一個廣告營銷項目違反了谷歌公司制定的禁止向未成年人投放個性化廣告的規(guī)則,目前已經(jīng)被歐盟委員會(European Commission)官員調(diào)查。歐洲監(jiān)管
發(fā)表于 12-11 16:10
?693次閱讀
據(jù)外媒報道,一家巴西公司Gradiente繼續(xù)爭奪著“iPhone”商標(biāo)的所有權(quán),在巴西市場和蘋果公司繼續(xù)展開法律拉鋸戰(zhàn)。 Gradiente在?2000 年在巴西市場推出名為“Gradiente
發(fā)表于 12-04 15:53
?708次閱讀
第二屆中國國際供應(yīng)鏈促進博覽會于11月26日至11月30日在北京中國國際展覽中心(順義館)舉行。在此次鏈博會上蘋果CEO庫克首次現(xiàn)身。 蘋果公司首席執(zhí)行官庫克亮相第二屆鏈博會;在蘋果公司的展覽牌上有
發(fā)表于 11-25 14:08
?768次閱讀
蘋果公司的一舉一動都牽動了很多從業(yè)者的心;蘋果公司從iPhone7手機開始正式取消了3.5mm耳機孔。蘋果雖然取消了3.5mm耳機孔但是還是有配套的Lightning轉(zhuǎn)3.5耳機轉(zhuǎn)接頭銷售,現(xiàn)在多國
發(fā)表于 11-20 16:51
?4029次閱讀
蘋果2024 財年第四季度業(yè)績數(shù)據(jù)已經(jīng)公布。蘋果公司的營收實現(xiàn)6%的增長達到949.3億美元,財務(wù)業(yè)績表現(xiàn)還是不錯。在2024財年第4財季,蘋果公司實現(xiàn)營收949.3億美元,同比增長6
發(fā)表于 11-02 19:35
?1376次閱讀
蘋果公司近期動作頻頻,我們來看看蘋果公司近期想收購的兩家公司,一個是衛(wèi)星通訊公司Globalstar(全球星);一個是軟件開發(fā)公司Pixel
發(fā)表于 11-02 17:51
?1913次閱讀
今日,蘋果公司正式發(fā)布了iOS 18.1正式版更新,為海外iPhone用戶解鎖了多項創(chuàng)新功能。其中,尤為引人注目的Apple Intelligence系統(tǒng)已正式登陸iPhone 15 Pro及iPhone 16全系等高端機型,這標(biāo)志著蘋果公司在人工智能領(lǐng)域取得了重要進展。
發(fā)表于 10-29 14:39
?1640次閱讀
評論