[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


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

查看所有标签

猜你喜欢:

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

热搜:搜索排名营销大揭秘

热搜:搜索排名营销大揭秘

【美】肖恩·布拉德利 / 中国人民大学出版社有限公司 / 2018-7-30 / CNY 55.00

首部大数据在我国政府管理场景中的应用实践案例读本,全面展示我国电子政务与数字化建设的成果,深度理解实施国家大数据战略的重要意义。 本书作者作为国内最早从事大数据应用研究的实践者之一,亲历了中国大数据的发展历程、主要事件、应用案例以及行业变化。 在本书中,作者将其所亲历的大数据发展历程进行了阐述,从大数据的基本概念、特点到实践解读,通俗易懂,给我们的实际工作提供了重要参考。作者将帮助读者......一起来看看 《热搜:搜索排名营销大揭秘》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换