【问题标题】:Go parsing JWT: error verifying ID token: illegal base64 data at input byte 0Go 解析 JWT:验证 ID 令牌时出错:输入字节 0 处的 base64 数据非法
【发布时间】:2018-06-18 12:54:36
【问题描述】:

我在 GET 请求的请求标头中将 Firebase JWT 添加到我的 Google App Engine Go 服务。这是 JavaScript:

const response = await fetch(
                'https://some-app.appspot.com/_ah/data', {
                    method: 'get',
                    headers: {
                        'Authorization': 'Bearer ' + await Component.fetchJWT()
                    }
                });

在我的 Go 服务(托管在端点)上,接收到请求。但是,错误被抛出:

error verifying ID token: illegal base64 data at input byte 0

这是我处理 JWT 的方式:

func (ma *myapp) SomeHandler(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    reqToken := r.Header.Get("Authorization")
    splitToken := strings.Split(reqToken, "Bearer")
    reqToken = splitToken[1]
    fmt.Println(reqToken) // Prints the token correctly

    lib.VerifyIDToken(ma.fbapp, reqToken) // Error is thrown in this function

    enc := json.NewEncoder(w)
    err := enc.Encode(SomeData)

    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
        return
    }
}

token函数是这样的:

func VerifyIDToken(app *firebase.App, idToken string) *auth.Token {
    // [START verify_id_token]
    client, err := app.Auth(context.Background())
    if err != nil {
        log.Fatalf("error getting Auth client: %v\n", err)
    }

    token, err := client.VerifyIDToken(idToken)
    if err != nil {
        log.Fatalf("error verifying ID token: %v\n", err) // Error thrown here
    }

    log.Printf("Verified ID token: %v\n", token)
    // [END verify_id_token]

    return token
}

打印出令牌时,我觉得它很好。但是,我从请求标头中检索它的方法是否错误?会是这样吗?

【问题讨论】:

    标签: javascript authentication go jwt


    【解决方案1】:

    去掉Authorization header split中的前导空格

    strings.Split(reqToken, "Bearer ")
    

    【讨论】:

    • 嗯,然后我的索引超出范围。也许我会拿[0]然后。
    • JWT 在请求标头中传递,所以这不是问题
    • 你能告诉我 reqToken 长什么样吗?只需匿名化令牌
    • 我不知道该怎么做。对不起。
    • fmt.Println(reqToken) 在拆分部分之前并将您的令牌替换为“Bearer THISSHOULDBYMYTOKEN”之类的东西:)
    猜你喜欢
    • 2023-03-21
    • 2016-12-20
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    • 1970-01-01
    • 2014-11-08
    • 2020-09-13
    • 1970-01-01
    相关资源
    最近更新 更多