drgaeqdqiiyg14608 2016-12-23 22:50
浏览 69

在Go中调试两足式OAuth2

I am working on implementing a client library for a remote API which uses 2-legged OAuth2 for authentication.

package main

import (
    "net/http"
    "golang.org/x/oauth2/clientcredentials"
    "golang.org/x/net/context"
)

type SpecialClient struct {
    *http.Client
}

func NewClient(cid, cis string) *SpecialClient {
    tconf := clientcredentials.Config{
        ClientID:     cid,
        ClientSecret: cis,
        TokenURL:     "http://some.remote.resource/token",
    }

    c := tconf.Client(context.Background())
    return &SpecialClient{c}
}

func main() {
    c := NewClient("clientID", "clientSecret")
    c.Get("http://some.remote.resource/path/to/resource")
}

It is extremely straightforward. Right now, I think the remote API's OAuth2 implementation is broken, as it's not returning a token properly according to RFC 6749. I'm trying to debug the client creation with golang.org/x/oauth2/clientcredentials, but I cannot determine at which point a token is fetched from the token URL. I've stepped through almost 100 calls with delve, and I do not see the client creating a new request to fetch a token. Is there a way I can review the request created by the *http.Client used to retrieve the token?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 永磁直线电机的电流环pi调不出来
    • ¥15 用stata实现聚类的代码
    • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
    • ¥20 docker里部署springboot项目,访问不到扬声器
    • ¥15 netty整合springboot之后自动重连失效
    • ¥15 悬赏!微信开发者工具报错,求帮改
    • ¥20 wireshark抓不到vlan
    • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
    • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
    • ¥15 stata安慰剂检验作图但是真实值不出现在图上