apache / apache/servicecomb-java-chassis
[BUG] - 服务间认证,消费方多实例时,服务方认证鉴权会失败
オープン
bug
- 主要言語
- Java
- スター
- 1.9k
- フォーク
- 814
- 平均マージ
- 8日 23時間
- マージ済み PR(30日)
- 1
説明
### Steps to Reproduce
1、ConsumerTokenManager 生成的逻辑中,token拼接使用的 applicationName 和 serviceName,但是用于签名的公私钥对是每个微服务实例生成的。
2、ProviderTokenManager 去取消费方微服务的公钥时,默认取的实例组中的 get(0) 对应的公钥,就会导致多消费实例时,其他消费方认证失败
### Expected Behavior
_No response_
### Servicecomb Version
3.3.0
### Additional Context
_No response_
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
調査の方向性
まず、ConsumerTokenManager のトークン生成ロジックと、ProviderTokenManager のコンシューマー公開鍵の検索処理を読みます。ServiceComb 3.3.0 で複数のコンシューマーインスタンスを使用して失敗を再現し、applicationName、serviceName、インスタンス固有のキーペアがどのように使用されているかを追跡します。すべてのコンシューマーインスタンスが認証に成功し、プロバイダーの認可を正常に通過できれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- java
- 領域
- authentication, authorization, backend
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 静か
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 45/100