iT邦幫忙

2024 iThome 鐵人賽

DAY 25
0
  1. 密鑰生成

    let key = P256.Signing.PrivateKey()
    

    創建一個 P256 橢圓曲線的私鑰。

  2. 設置過期時間

    let expiredAt = Date().addingTimeInterval(60)
    

    設置 JWT 的過期時間為當前時間後的 60 秒。

  3. 創建 JWT 聲明

    let mockClaims = DefaultJWTClaimsImpl(
        iss: "testXiang",
        sub: "Xiang",
        exp: expiredAt
    )
    

    設置 JWT 的聲明,包括發行者(iss)、主題(sub)和過期時間(exp)。

  4. 生成 JWT

    let jwt = try JWT.signed(
        payload: mockClaims,
        protectedHeader: DefaultJWSHeaderImpl(algorithm: .ES256),
        key: key
    )
    

    使用 ES256 算法和私鑰簽署 JWT。

簽名的目的是:
驗證 JWT 的完整性,確保它在傳輸過程中沒有被篡改。
證明 JWT 確實是由聲稱的發行者簽發的。
防止未經授權、偽造或修改 JWT。

  1. 獲取 JWT 字符串

    let jwtString = jwt.jwtString
    
  2. 驗證 JWT

    let verifiedJWT = try JWT.verify(jwtString: jwtString, senderKey: key.publicKey)
    

    使用公鑰驗證 JWT 的有效性。

  3. 提取驗證後的載荷

    let verifiedPayload = verifiedJWT.payload
    
  4. 輸出結果
    打印 JWT 字符串和驗證後的載荷內容。

這個程式碼示例展示了 JWT 的完整生命週期,從生成到驗證,使用了安全的非對稱加密方法。


上一篇
Day24 - 什麼是 JWT
下一篇
Day26 - 實作 Encrypted JWT
系列文
Xiang教你進階Swift從有到精30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言