Class: ChatSDK::GChat::TokenVerifier
- Inherits:
-
Object
- Object
- ChatSDK::GChat::TokenVerifier
- Defined in:
- lib/chat_sdk/gchat/token_verifier.rb
Constant Summary collapse
- EXPECTED_ISSUER =
"chat@system.gserviceaccount.com"
Instance Method Summary collapse
-
#initialize(project_number) ⇒ TokenVerifier
constructor
A new instance of TokenVerifier.
- #verify!(token) ⇒ Object
Constructor Details
#initialize(project_number) ⇒ TokenVerifier
Returns a new instance of TokenVerifier.
8 9 10 |
# File 'lib/chat_sdk/gchat/token_verifier.rb', line 8 def initialize(project_number) @project_number = project_number.to_s end |
Instance Method Details
#verify!(token) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/chat_sdk/gchat/token_verifier.rb', line 12 def verify!(token) raise ChatSDK::SignatureVerificationError, "Missing bearer token" if token.nil? || token.empty? payload = Google::Auth::IDTokens.verify_oidc( token, aud: @project_number ) issuer = payload["iss"] || payload["email"] unless issuer == EXPECTED_ISSUER raise ChatSDK::SignatureVerificationError, "Unexpected issuer: #{issuer} (expected #{EXPECTED_ISSUER})" end payload rescue Google::Auth::IDTokens::VerificationError => e raise ChatSDK::SignatureVerificationError, "Google ID token verification failed: #{e.}" end |