go gitea OAuth2 登录

俞涵涤
2023-12-01

go gitea OAuth2 登录

关于oauth2网络介绍的已经很多了,咱简单的说说,如何go代码进行访问oauth2登录,详细的可以看源码嘛.

gitea文档网址:
https://docs.gitea.io/en-us/oauth2-provider/
授权端点	/login/oauth/authorize
访问令牌端点	/login/oauth/access_token

通过get请求
https://[YOUR-GITEA-URL]/login/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI& response_type=code&state=STATE
得到验证的网址登录,同意之后,就拿到了访问令牌端点

https://github.com/drone/go-login 这里面的便是调用的源码,如何进行调用,设置为gitea,
gitea--> 用户-->设置-->应用--> 管理OAuth2应用程序-->输入应用名称-->重定向URL
获取到的 客户端ID clientID和客户端密钥 clientSecret
redirectURL 回调网址

var (
	provider     = flag.String("provider", "gitea", "")
	providerURL  = flag.String("provider-url", "", "")
	clientID     = flag.String("client-id", "533db180-04ee-47bb-ad59-a8e5f826015a", "")
	clientSecret = flag.String("client-secret", "byPsZtxjTdQK6MUMqLXYuXeh9f0CiYazXXNcIBy8C_Q=", "")
	consumerKey  = flag.String("consumer-key", "", "")
	consumerRsa  = flag.String("consumer-private-key", "", "")
	redirectURL  = flag.String("redirect-url", "http://192.168.0.64:8080/login", "")
	address      = flag.String("address", ":8080", "")
	dump         = flag.Bool("dump", false, "")
	help         = flag.Bool("help", false, "")
)

func main() {
	flag.Usage = usage
	flag.Parse()

	if *help {
		flag.Usage()
		os.Exit(0)
	}

	dumper := logger.DiscardDumper()
	if *dump {
		dumper = logger.StandardDumper()
	}

	var middleware login.Middleware
	switch *provider {
	case "gogs":
		middleware = &gogs.Config{
			Login:  "/login/form",
			Server: *providerURL,
		}
	case "gitea":
		middleware = &gitea.Config{
			ClientID:     *clientID,
			Server:       "http://192.168.0.70:10080/",
			ClientSecret: *clientSecret,
			RedirectURL:  *redirectURL,
		}
		
 类似资料: