開源專案 Gitea 支援 OAuth Provider

Gitea

很高興看到 Gitea 正式支援 OAuth Provider 了,此功能經歷了四個月終於正式合併進 master 分支,預計會在 1.8 版本釋出,由於此功能已經進 master,這樣我們就可以把原本 Drone 透過帳號密碼登入,改成使用 OAtuh 方式了,增加安全性。但是在使用之前,Drone 需要合併 drone/go-login@3drone/drone@2622。如果您會使用 Go 語言,不妨現在就可以來試試看了,透過 go build 來編譯原始碼。

影片教學

有興趣可以參考線上教學

安裝 Gitea

由於 Gitea 還沒轉到 Go module (已經有另外一個 PR 再處理 Vendor),所以請 clone 專案原始碼到 GOPATH 底下

$ git clone https://github.com/go-gitea/gitea.git \
  /go/src/code.gitea.io/gitea

接著切換到專案目錄,編譯出 SQLite 的 Binary

$ TAGS="sqlite sqlite_unlock_notify" make

編譯完成後,直接執行

$ ./gitea web
2019/03/09 12:26:03 [T] AppPath: /Users/appleboy/git/go/src/code.gitea.io/gitea/gitea
2019/03/09 12:26:03 [T] AppWorkPath: /Users/appleboy/git/go/src/code.gitea.io/gitea
2019/03/09 12:26:03 [T] Custom path: /Users/appleboy/git/go/src/code.gitea.io/gitea/custom
2019/03/09 12:26:03 [T] Log path: /Users/appleboy/git/go/src/code.gitea.io/gitea/log
2019/03/09 12:26:03 Serving [::]:3000 with pid 18284

打開瀏覽器登入後,進入右上角使用者設定,就可以建立新的 Application。

其中 Redirect URL 請填上 drone 的 URL http://localhost:8080/login

安裝 Drone

在上面有提到需要合併兩個 PR (drone@go-login#3drone@drone#2622) 才能使用此功能,等不及的朋友們就自己先 Fork 來使用吧。先假設已經合併完成。

$ cd $GOPAHT/drone
$ go build ./cmd/drone-server

然後建立 server.sh 將環境變數寫入

#!/bin/sh
export DRONE_GITEA_SERVER=http://localhost:3000
export DRONE_GITEA_CLIENT_ID=49de7c23-3bed-45a1-a78e-89c8ba4db07b
export DRONE_GITEA_CLIENT_SECRET=8GhG9XvPJEpaOroVocmJPAQArO5Zz7KMLQ5df0eG91c=
./drone-server

啟動 drone 服務,會看到一些 Info 訊息:

$ ./server.sh 
{"level":"info","msg":"main: internal scheduler enabled","time":"2019-03-09T12:39:21+08:00"}
{"level":"info","msg":"main: starting the local build runner","threads":2,"time":"2019-03-09T12:39:21+08:00"}
{"acme":false,"host":"localhost:8080","level":"info","msg":"starting the http server","port":":8080","proto":"http","time":"2019-03-09T12:39:21+08:00","url":"http://localhost:8080"}
{"interval":"30m0s","level":"info","msg":"starting the cron scheduler","time":"2019-03-09T12:39:21+08:00"}

打開瀏覽器輸入 http://localhost:8080 就可以看到跳轉到 OAuth 頁面

心得

現在 Gitea 已經支援 OAuth Provider,未來可以再接更多第三方服務,這樣就可以不用透過帳號密碼登入,避免讓第三方服務存下您的密碼。