10月14日,蘋果公司COO(首席運(yùn)營官)Sabih Khan走訪了瑞聲科技位于江蘇常州的均熱板模組生產(chǎn)工廠,參觀了首條全自動(dòng)化的超薄均熱板生產(chǎn)線。
發(fā)表于 10-17 15:37
?316次閱讀
給大家?guī)硪恍┬袠I(yè)資訊: 蘋果不是美國最賺錢公司了 現(xiàn)在蘋果公司已經(jīng)不是美國最賺錢公司了;根據(jù)《財(cái)富》雜志發(fā)布的2025年美國500強(qiáng)排行榜榜單數(shù)據(jù)
發(fā)表于 06-03 15:29
?476次閱讀
據(jù)外媒報(bào)道,蘋果公司正研發(fā)用于AI服務(wù)器的專用芯片;據(jù)蘋果公司知情人士透露;蘋果芯片設(shè)計(jì)團(tuán)隊(duì)正在加速研發(fā)新芯片,面向的主要領(lǐng)域包括智能眼鏡芯片、功能更強(qiáng)大的Mac電腦芯片以及AI服務(wù)器專用芯片
發(fā)表于 05-09 11:25
?841次閱讀
一、概述
通過訂閱用戶信息變更,您可以接收有關(guān)用戶及其賬戶的重要更新。當(dāng)用戶取消元服務(wù)的授權(quán)信息、注銷華為賬號時(shí),華為賬號服務(wù)器會(huì)發(fā)送通知到元服務(wù),元服務(wù)可以根據(jù)通知消息進(jìn)行自身業(yè)務(wù)處理。
二、用戶信息變更事件介紹
三、訂閱用戶信息變更
訂閱步驟如下:
1.登錄華為開發(fā)者聯(lián)盟,選擇“管理中心 > API服務(wù) > API庫”。
2.在App Services找到RISC。
3.點(diǎn)擊啟用按鈕,選擇您的項(xiàng)目,點(diǎn)擊確定。
4.點(diǎn)擊訂閱通知按鈕,在彈窗中配置回調(diào)地址及訂閱范圍。
說明
回調(diào)地址:在開啟訂閱通知后,若華為用戶信息存在變更,會(huì)通過發(fā)送消息到該地址。
訂閱范圍:訂閱的用戶信息變更事件,詳見用戶信息變更事件介紹。
四、處理通知消息
華為賬號服務(wù)器向元服務(wù)投遞消息。元服務(wù)接收到消息后需要先對消息頭中的令牌進(jìn)行驗(yàn)簽,確保消息的完整有效性后解析并獲取用戶信息變更事件詳情。具體步驟如下:
1.驗(yàn)證消息頭中的令牌簽名。
您可通過任何JWT庫(例如:jwt.io)對其進(jìn)行解析與驗(yàn)證。
無論使用哪種庫,您均需完成如下操作:
調(diào)用接口(https://risc.cloud.huawei.com/v1beta/public/risc/.well-known/risc-configuration),獲取發(fā)行者標(biāo)識(shí)(issuer)與簽名密鑰證書URI(jwks_uri)。
通過依賴的JWT庫,對消息頭中的令牌進(jìn)行解析,獲取簽名的KeyId。
通過簽名的KeyId,從簽名密鑰證書URI中獲取到JWT簽名的公鑰。
校驗(yàn)JWT簽名中的aud與訂閱用戶信息變更中提供的Client ID一致。
校驗(yàn)JWT簽名中的issuer與發(fā)行者標(biāo)識(shí)(issuer)一致。
具體驗(yàn)簽邏輯,請參考如下示例代碼:
Maven依賴配置
<dependencies>
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>2.9.3</version> <!--此處替換為您項(xiàng)目需要的版本-->
</dependency>
<dependency>
<groupId>com.auth0</groupId>
<artifactId>jwks-rsa</artifactId>
<version>0.21.2</version> <!--此處替換為您項(xiàng)目需要的版本-->
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.11.5</version> <!--此處替換為您項(xiàng)目需要的版本-->
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>0.11.5</version> <!--此處替換為您項(xiàng)目需要的版本-->
</dependency>
</dependencies>
Java驗(yàn)簽代碼示例
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)) {
// 驗(yàn)簽失敗,進(jìn)行自己邏輯處理
} else {
// 驗(yàn)簽成功,進(jìn)行自己邏輯處理
}
}
/**
* 對Authorization頭域中的token進(jìn)行驗(yàn)簽
*
* @param token 消息請求頭中Authorization: Bearer <token>中的<token>
* @param clientId Client ID
*
* @Return 返回為null,則表示驗(yàn)簽失敗,否則表示驗(yàn)證成功
*/
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);
}
};
// 驗(yàn)證并解析消息內(nèi)容
JwtParser parser = Jwts.parserBuilder()
.requireIssuer(issuer)
.requireAudience(clientId)
.setAllowedClockSkewSeconds(60)
.setSigningKeyResolver(signingKeyResolver)
.build();
jwt = parser.parse(token);
} catch (IncorrectClaimException e) {
// 消息的claim無效,針對異常進(jìn)行處理(如:日志記錄)
e.printStackTrace();
} catch (SignatureException e) {
// 驗(yàn)簽失敗,針對異常進(jìn)行處理(如:日志記錄)
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)頭像昵稱、快速驗(yàn)證手機(jī)號、收貨地址、發(fā)票抬頭、未成年人模式等特性,可參考該工程進(jìn)行應(yīng)用的相關(guān)內(nèi)容開發(fā)。
一
發(fā)表于 03-31 12:08
蘋果公司就“毒表帶”集體訴訟案件發(fā)布聲明,強(qiáng)調(diào)Apple Watch表帶各項(xiàng)檢測指標(biāo)符合監(jiān)管要求,用戶可安全放心佩戴。 蘋果官方表示:“用戶可以放心、安全佩戴蘋果Apple Watch表帶。在
發(fā)表于 01-24 14:33
?885次閱讀
或者因?yàn)槭艿?b class='flag-5'>蘋果公司在2024年第四季度中國市場表現(xiàn)不佳,iPhone銷量同比下滑18.2%的不利影響,而且華爾街機(jī)構(gòu)Jefferies和Loop Capital均下調(diào)蘋果評級;Jefferies
發(fā)表于 01-22 15:39
?751次閱讀
近日,有公開信息顯示,蘋果技術(shù)開發(fā)(上海)有限公司已經(jīng)正式成立。該公司注冊資本為3500萬美元,涵蓋了多項(xiàng)業(yè)務(wù)領(lǐng)域,其中主要包括軟件開發(fā)、大數(shù)據(jù)服務(wù)、
發(fā)表于 01-13 14:36
?886次閱讀
近日,印尼工業(yè)部長阿古斯發(fā)表聲明指出,蘋果公司需遵循印尼當(dāng)?shù)胤ㄒ?guī),在印尼境內(nèi)生產(chǎn)部分智能手機(jī)或其組件,方能在印尼市場銷售其產(chǎn)品。然而,由于蘋果公司當(dāng)前未能達(dá)到這一國產(chǎn)化率要求,政府尚未向蘋果頒發(fā)
發(fā)表于 01-09 11:22
?827次閱讀
即將面世的新款iPhone定位親民,旨在吸引更廣泛的消費(fèi)群體。此舉也被視為蘋果公司應(yīng)對近期iPhone 16系列銷量不佳、緩解市場壓力的重要策略之一。 為了配合蘋果公司的生產(chǎn)計(jì)劃,富士康正在積極招募新員工,并加強(qiáng)生產(chǎn)線的準(zhǔn)備工作
發(fā)表于 01-09 11:08
?849次閱讀
給大家?guī)韮蓚€(gè)蘋果公司的新消息: 蘋果補(bǔ)繳近110億歐元欠稅? 在愛爾蘭;蘋果公司持續(xù)八年時(shí)間的稅務(wù)訴訟畫下句號,蘋果補(bǔ)繳近110億歐元欠稅 。 在2024年9月,歐洲法院裁定
發(fā)表于 01-08 16:35
?1095次閱讀
據(jù)外媒報(bào)道;歐洲監(jiān)管機(jī)構(gòu)認(rèn)為Meta和谷歌的一個(gè)廣告營銷項(xiàng)目違反了谷歌公司制定的禁止向未成年人投放個(gè)性化廣告的規(guī)則,目前已經(jīng)被歐盟委員會(huì)(European Commission)官員調(diào)查。歐洲監(jiān)管
發(fā)表于 12-11 16:10
?706次閱讀
據(jù)外媒報(bào)道,一家巴西公司Gradiente繼續(xù)爭奪著“iPhone”商標(biāo)的所有權(quán),在巴西市場和蘋果公司繼續(xù)展開法律拉鋸戰(zhàn)。 Gradiente在?2000 年在巴西市場推出名為“Gradiente
發(fā)表于 12-04 15:53
?740次閱讀
第二屆中國國際供應(yīng)鏈促進(jìn)博覽會(huì)于11月26日至11月30日在北京中國國際展覽中心(順義館)舉行。在此次鏈博會(huì)上蘋果CEO庫克首次現(xiàn)身。 蘋果公司首席執(zhí)行官庫克亮相第二屆鏈博會(huì);在蘋果公司的展覽牌上有
發(fā)表于 11-25 14:08
?792次閱讀
蘋果公司的一舉一動(dòng)都牽動(dòng)了很多從業(yè)者的心;蘋果公司從iPhone7手機(jī)開始正式取消了3.5mm耳機(jī)孔。蘋果雖然取消了3.5mm耳機(jī)孔但是還是有配套的Lightning轉(zhuǎn)3.5耳機(jī)轉(zhuǎn)接頭銷售,現(xiàn)在多國
發(fā)表于 11-20 16:51
?4073次閱讀
評論