[Golang] 安裝流程 CoreOS/DEX : OAuth Server

栏目: 服务器 · 发布时间: 7年前

内容简介:[Golang] 安裝流程 CoreOS/DEX : OAuth Server

挑選 DEX

挑選 CoreOS 的 Dex ,因為它具有以下特點:

  • 支援 OpenID
  • 支援 Kubernetes Authenication (via OpenID)
  • 支援 OAuth
  • CoreOS 開發 (XD)

以下就是基本建置方式

建立 Google API Console 憑證

  • 進入 Google API Console 選擇已經有的專案(或是建立一個新的)
  • 進入” 憑證中心 “,建立一個新的憑證.
    • 選取 “OAuth 用戶端 ID “
    • 選取 “網路應用程式”
    • 在 “已授權的重新導向 URI” 輸入 “http://127.0.0.1:5556/dex/auth/google/callback”
  • 這邊會取得 “ID” 跟 “Secret” 記得存下來.

建立資料庫 (PostgresQL)

1. 設定 postgres docker

docker run --name postgres -e POSTGRES_PASSWORD=YOURPASSWORD -d postgres

2. 登入建立相關 schema

docker run -it --rm --link postgres:postgres postgres psql -h postgres -U postgres

>Password for user postgres: 
>psql (9.5.4)
>Type "help" for help.


postgres=# CREATE DATABASE dex_db;
> CREATE DATABASE

postgres=# CREATE USER dex WITH PASSWORD 'dex_pass';
> CREATE ROLE

postgres=# GRANT ALL PRIVILEGES ON DATABASE dex_db TO dex;
> GRANT

postgres=# \q //離開 postgre console

3. 編譯 DEX

先設定 postgres 環境變數,將剛剛資料庫密碼帶入

export DEX_DB_URL=postgres://dex: [email protected]
/dex_db?sslmode=disable

P.S.: 如果你跟我一樣 postgres 使用 docker ,記得將 localhost 改成該 container 的 IP.

下載並且編譯 DEX

git clone https://github.com/coreos/dex.git
cd dex
./build

4. 設定環境變數與啟動 DEX 服務

準備一段密碼(可能需要在其他電腦,如果你機器是乾淨的): (我是在 Mac 下跑這段:)

  • 產生 Secret Symmetric Key
export DEX_KEY_SECRET=$(dd if=/dev/random bs=1 count=32 2>/dev/null | base64 | tr -d '\n')

//這是 Mac 產生的
> dd if=/dev/random bs=1 count=32 2>/dev/null | base64 | tr -d '\n'
hwMSvt8Fr39WN2tN1ydyPlD02szBhhL6REjGgCIhn3o=
  • 產生 Admin API Secret
DEX_OVERLORD_ADMIN_API_SECRET=$(dd if=/dev/random bs=1 count=128 2>/dev/null | base64 | tr -d '\n')

//這是 Mac 產生的
> dd if=/dev/random bs=1 count=128 2>/dev/null | base64 | tr -d '\n'

B02cILOvy6o7DNU/zH7umCNkWr+E2MSkFsV3+nj5uKNaqVK7T33OLdN1ou38Rid6Swy/ZL4GljqeGOFhDgHJTkjA1so2HYr8Uda2FYHRuz2/AMSamwjLCOANl+3i9WOGduTDc8BtksN+fXB5xaJYpKDxWbcZoAaC1rU3VZyajDM=

設定環境變數,啟動伺服器.

export DEX_OVERLORD_ADMIN_API_SECRET=$DEX_OVERLORD_ADMIN_API_SECRET
export DEX_OVERLORD_DB_URL=$DEX_DB_URL
export DEX_OVERLORD_KEY_SECRETS=$DEX_KEY_SECRET
export DEX_OVERLORD_LOG_DEBUG=true
./bin/dex-overlord &

5. 執行 worker

這裡要修改 static/fixtures/emailer.json 不過可以先依照原本範例使用 fake email

./bin/dex-worker --db-url=$DEX_DB_URL --key-secrets=$DEX_KEY_SECRET --email-cfg=static/fixtures/emailer.json --enable-registration=true --log-debug=true &

6. 執行 Connector

記得要先將 $DEX_GOOGLE_CLIENT_ID$DEX_GOOGLE_CLIENT_SECRET 換成你在 Google API Console 拿來的資料.

cat << EOF > /tmp/dex_connectors.json
[
    {
        "type": "local",
        "id": "local"
    },
    {
        "type": "oidc",
        "id": "google",
        "issuerURL": "https://accounts.google.com",
        "clientID": "$DEX_GOOGLE_CLIENT_ID",
        "clientSecret": "$DEX_GOOGLE_CLIENT_SECRET",
        "trustedEmailProvider": true
    }
]
EOF
./bin/dexctl --db-url=$DEX_DB_URL set-connector-configs /tmp/dex_connectors.json

7. 啟動 Client

eval "$(./bin/dexctl --db-url=$DEX_DB_URL new-client http://127.0.0.1:5555/callback)"

記得要把 127.0.0.1 換成你的 public IP .

8. 啟動 Web Server

./bin/example-app --client-id=$DEX_APP_CLIENT_ID --client-secret=$DEX_APP_CLIENT_SECRET --discovery=http://127.0.0.1:5556/dex &

記得要把 127.0.0.1 換成你的 public IP .

Authenitication for Kubernetes


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Practical Algorithms for Programmers

Practical Algorithms for Programmers

Andrew Binstock、John Rex / Addison-Wesley Professional / 1995-06-29 / USD 39.99

Most algorithm books today are either academic textbooks or rehashes of the same tired set of algorithms. Practical Algorithms for Programmers is the first book to give complete code implementations o......一起来看看 《Practical Algorithms for Programmers》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具