Giter Site home page Giter Site logo

leejoneshane / tpedusso Goto Github PK

View Code? Open in Web Editor NEW
10.0 9.0 9.0 53.92 MB

臺北市教育人員單一身份驗證服務平台

License: GNU General Public License v3.0

PHP 41.72% JavaScript 25.35% CSS 15.17% Vue 0.03% HTML 0.39% Dockerfile 0.21% Shell 0.18% SCSS 0.02% Blade 16.93%
laravel ldap docker sso oauth2-provider open-data

tpedusso's Introduction

臺北市教育人員單一身分驗證服務平台,為臺北市政府教育局所發展教育人員單一簽入的管理平台,由臺北市老師自主研發,若您為臺北市教師且對程式開發感興趣,請與我聯繫!目前服務平台提供之功能,包含:一般教育人員帳號管理介面、學校管理人員管理介面、局端管理介面、Oauth2 驗證服務、教育開放資料介接 Data API、SAML2 Identity Provider、全誼、巨耀、虹橋校務行政系統資料介接與同步功能、社群帳號綁定、註冊家長帳號、親子連結機制、13歲以下學生由家長代理授權機制、專案線上申請修改及審核機制、Gsuite同步與子機構自動授權給學校管理員功能。平台使用 laravel 進行開發,所有程式碼開源,歡迎各縣市網路中心自行下載使用。

開發中的功能則有:親子自動化連結功能,尚需進一步討論後確認。

開發模式

請先在工作站上安裝 docker(安裝文件) 以及 docker-compose(安裝文件)。

請使用 git clone https://github.com/leejoneshane/tpeduSSO.git 下載本專案到開發工作站上。

請切換到專案的根目錄下,執行底下指令:

docker-compose up -d

稍待幾分鐘,系統將為您啟動 openldap server、freeradius server、phpLDAPadmin web server、mysql server 和 redis server,然後您就可以開始撰寫或修改程式碼。

打開瀏覽器連到 https://localhost ,查看程式執行結果。

請使用測試帳號登入系統:

  • 帳號:meps123456789,密碼:test,身分:老師
  • 帳號:meps106001,密碼:test,身分:學生

設定學校管理員:

  • 帳號:dc=meps,密碼:test(注意:此方法為匿名登入,當學校尚未設定管理員時使用!)

執行環境

若要讓系統實際上線服務,請務必修改環境變數,在 docker-compose.yml 檔案中,請設定以下參數:

  • APP_DEBUG: true 可省略,預設為 false,除錯功能的開關。
  • APP_URL: https://ldap.tp.edu.tw 可省略,預設值同前,若為其他縣市請務必修改。
  • FORCE_SCHEME: http 可省略,將伺服器網址全部修改成指定的 scheme,只能設定 http 或 https。
  • SESSION_SECURE_COOKIE: 'false' 可省略,只接受瀏覽器透過 https 回傳 cookie,可增加安全性。
  • CACHE_DRIVER: redis 不可省略,可以使用 redis 或 file 作為網站快取。
  • SESSION_DRIVER: redis 不可省略,可以使用 redis 或 file 作為連線快取。
  • SESSION_CONNECTION: session 不可省略,指定連線 session 要儲存在哪一個 redis 資料庫。
  • REDIS_HOST: 172.17.0.3 不可省略,redis 快取系統的網址名稱或IP,若使用容器快取伺服器,請填寫容器名稱。
  • REDIS_PORT: 6379 可省略,預設值同前,為 redis 快取的連線埠號。
  • REDIS_PASSWORD: null 可省略,預設值同前,為 redis 快取的操作密碼。
  • DB_HOST: 172.17.0.2 不可省略,外部資料庫系統的網址名稱或IP,若使用容器資料庫,請填寫容器名稱。
  • DB_PORT: 3306 可省略,預設為 3306,資料庫連線埠號。
  • DB_DATABASE: laravel 可省略,預設值同前,為資料庫的名稱。
  • DB_USERNAME: root 可省略,預設值同前,為資料庫的管理員帳號。
  • DB_PASSWORD: should.match.MYSQL_ROOT_PASSWORD 不可省略,為資料庫的管理員密碼。
  • LDAP_HOST: ldap://172.22.0.4 不可省略,openldap 伺服器的 URL,若使用容器快取伺服器,請把 IP 改為容器名稱。
  • LDAP_ROOTDN: cn=admin,dc=tp,dc=edu,dc=tw 不可省略,openldap 伺服器管理員的 DN。
  • LDAP_ROOTPWD: test 不可省略,openldap 伺服器的管理員網路連線密碼。
  • MAIL_DRIVER: smtp 不可省略,可使用的設定值包含:smtp、sendmail、mail、log、mailgun、mandrill...等。
  • MAIL_HOST: smtp.gmail.com 不可省略,外部郵件伺服器的網址名稱或IP。
  • MAIL_PORT: 587 不可省略,外部郵件伺服器的寄信埠號。
  • MAIL_ADDRESS: [email protected] 不可省略,外部郵件伺服器的郵件地址。
  • MAIL_USERNAME: [email protected] 不可省略,外部郵件伺服器的登入帳號。
  • MAIL_PASSWORD: password 不可省略,外部郵件伺服器的登入密碼。
  • MAIL_ENCRYPTION: tls 可省略,外部郵件伺服器的所使用的加密協定,可能為 ssl 或 tls。
  • SAML_MAIL: ms.tp.edu.tw 不可省略,gmail 服務的領域名稱,將附加在使用者 uid 後面。
  • PS_CLIENT_ID: 不可省略,國小校務行政系統介接參數。
  • PS_CLIENT_SECRET: 不可省略,國小校務行政系統介接參數。
  • PS_APISERVER: 不可省略,國小校務行政系統 Data API URL。
  • JS_CLIENT_ID: 不可省略,國高中校務行政系統介接參數。
  • JS_CLIENT_SECRET: 不可省略,國高中校務行政系統介接參數。
  • JS_APISERVER: 不可省略,國高中校務行政系統 Data API URL。
  • HS_ACCOUNT: 不可省略,高職校務行政系統介接參數。
  • HS_PASSWORD: 不可省略,高職校務行政系統介接參數。
  • HS_APISERVER: 不可省略,高職校務行政系統 Data API URL。
  • GOOGLE_ADMIN_EMAIL: G Suite 網域管理員帳號
  • GOOGLE_SERVICE_ACCOUNT_JSON_LOCATION: G Suite 服務帳號驗證金鑰檔案路徑
  • GOOGLE_CLIENT_ID: Google Login OAuth 專案代號
  • GOOGLE_CLIENT_SECRET: Google Login OAuth 專案金鑰
  • FACEBOOK_CLIENT_ID: Facebook Login OAuth 專案代號
  • FACEBOOK_CLIENT_SECRET: Facebook Login OAuth 專案金鑰
  • YAHOO_CLIENT_ID: Yahoo Login OAuth 專案代號
  • YAHOO_CLIENT_SECRET: Yahoo Login OAuth 專案金鑰
  • LINE_CLIENT_ID: Line Login OAuth 專案代號
  • LINE_CLIENT_SECRET: Line Login OAuth 專案金鑰

關於 docker

Docker Community Edition (CE) is ideal for developers and small teams looking to get started with Docker and experimenting with container-based apps. Available for many popular infrastructure platforms like desktop, cloud and open source operating systems, Docker CE provides an installer for a simple and quick install so you can start developing immediately. Docker CE is integrated and optimized to the infrastructure so you can maintain a native app experience while getting started with Docker. Build the first container, share with team members and automate the dev pipeline, all with Docker Community Edition.

  • The latest Docker version with integrated tooling to build, test and run container apps
  • Available for free with software maintenance for the latest shipping version
  • Integrated and optimized for developer desktops, Linux servers and clouds.
  • Monthly Edge and quarterly Stable release channels available
  • Native desktop or cloud provider experience for easy onboarding
  • Unlimited public and one free private repo storage as a service *
  • Automated builds as a service *
  • Image scanning and continuous vulnerability monitoring as a service *

關於 Laravel

Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel attempts to take the pain out of development by easing common tasks used in the majority of web projects, such as:

Laravel is accessible, yet powerful, providing tools needed for large, robust applications.

tpedusso's People

Contributors

chiwen168 avatar dependabot[bot] avatar leejoneshane avatar leosys0827 avatar williamwu0220 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tpedusso's Issues

可否為每個單位建立獨一無二的代碼,比方用 UUID

我這邊因為監控系統是監控有將網路透過台智光接到市網的單位,所以我這邊有一張表,用來對應各單位,並用會計代碼作為登入的帳號。

目前 ldap.tp.edu.tw 使用的是各校的縮寫代碼,也用此代碼作為區分各個帳號歸屬於哪個單位的依據。

但以上兩種做法都會遇到問題:

  1. 會計代碼會變動
  2. 有些附屬單位,會計代碼會一樣,有些會不一樣
  3. 各校縮寫代碼會變動 (比方市大附小改了兩次)
  4. 承 3 有些附屬單位共用同一個縮寫,更甚者,可能之後還會獨立建立自己的縮寫或更改
  5. 第三方網站如果要跟 ldap.tp.edu.tw 介接維運下去,各單位有一個絕對不會變動的代碼,在日後同步上就不會因為代碼異動等因素出現錯誤的問題

不知老師想法如何?

登入onlinedb.tp.edu.tw 出現認證失敗(can not get profile)訊息

今日有老師反映,無法使用單一身分驗證登入onlinedb.tp.edu.tw ,經過實際測試,發現如果先登入ldap.tp.edu.tw,在cookie保留的情形下繼續使用單一身分驗證登入onlinedb.tp.edu.tw,就會出現認證失敗(can not get profile)的錯誤訊息。

暫時的workaround是請老師另開chrome無痕視窗,就能夠重新輸入帳號密碼登入。

不曉得是否是onlinedb.tp.edu.tw 那邊的介接程序出現問題。還請協助確認,謝謝!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.