<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] > [參考](https://www.jianshu.com/p/ad410836587a) ## Token&AppKey(APP) 與開放平臺認證不同的是 把 AccessKey改為token ## 簡要概述 1. 調用接口前,先登錄一個全局唯一的令牌(Token) 2. 調用接口時,將 Token 放到 Header 頭中 3. 解析 Header 頭,驗證是否為有效 Token,無效直接返回失敗 4. 完成業務邏輯后,將業務結果與 Token 進行關聯存儲,設置失效時間 5. 重試時不要重新獲取 Token,用要上次的 Token ### Token身份驗證 1. 用戶登錄向服務器提供認證信息(如賬號和密碼),服務器驗證成功后**返回Token**給客戶端; 2. 客戶端將Token保存在本地,后續發起請求時,**攜帶此Token**; 3. 服務器檢查Token的有效性,有效則放行,無效(Token錯誤或過期)則拒絕。 > **安全隱患**:Token被劫持,偽造請求和篡改參數。 ### Token+AppKey簽名驗證 (防篡改) 為客戶端分配AppKey(密鑰,用于接口加密,不參與傳輸),將AppKey和所有請求參數組合成源串,根據簽名算法生成簽名值,發送請求時將簽名值一起發送給服務器驗證。 ### 重放攻擊(可選,推薦) timestamp+nonce方案 timestamp:生成當前時間戳 nonce:生成唯一標識符 服務器判斷在timestamp的 15分鐘內,是否存在nonce,存在則拒絕,不存在則通過,并記錄 nonce(可以使用redis的expire,新增nonce的同時設置它的超時失效時間為15分鐘 ### 實現 登陸和登出請求 ![97554574-5BB1-48FC-9BAD-4325DF1095B7.png](http://yanxuan.nosdn.127.net/c73227505f3e7c01dffebbd1a58fd59c.png) #### 獲取token認證 1. 發送認證信息(如賬戶密碼) 2. 服務端接受認證信息,通過則生成 token,添加 uid 與有效期后存入數據庫 2. 客戶單接受服務端返回的 token, 并在后續請求中攜帶 #### 客戶端 1. 生成當前時間戳`timestamp=now`和唯一隨機字符串`nonce=random` 2. 按照請求參數名的字母**升序排列非空**請求參數(包含token) `stringA="token=token&home=world&name=hello&work=java&timestamp=now&nonce=random";` 3. 拼接密鑰SecretKey `stringSignTemp="stringA&token=token";` 4. MD5并轉換為大寫 `sign=MD5(stringSignTemp).toUpperCase();` 5. 最終請求 `http://api.test.com/test?name=hello&home=world&work=java&timestamp=now&nonce=nonce&sign=sign;` ### 服務端 ![60621CA6-77C7-4E8A-890F-BB0B3C7AAA42.png](http://yanxuan.nosdn.127.net/a45b123832049d24a8380e6c8ab7f614.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看