[精讚] [會員登入]
2394

[PHP] OPENID CONNECT #0 簡介及取得URL

教育部在全國性的OPENID CONNECT帳號服務,PHP程式說明文件及範例。

分享此文連結 //n.sfs.tw/11209

分享連結 [PHP] OPENID CONNECT #0 簡介及取得URL@Axer's World
(文章歡迎轉載,務必尊重版權註明連結來源)
2019-10-23 06:14:51 最後編修
2017-06-05 15:28:49 By Axer
 

自動目錄

此文分為幾個部分:

[PHP] OPENID CONNECT #0 簡介及取得URL
[PHP] OPENID CONNECT #1 取得ACCESS TOKEN
[PHP] OPENID CONNECT #2 取得USERINFO及PROFILE
[PHP] OPENID CONNECT #3 驗證id_token
[PHP] OPENID CONNECT #4 程式下載及安裝

教育部在2016-2017年推動一項計畫,建立全國性的帳號服務,並提供OPENID CONNECT的認證方式。

目的說明

如果我的網站想用教育部的帳號登入,直接使用我的服務,省略麻煩的帳號管理和註冊功能。

名詞解釋

本部帳號 教育部的帳號,帳號為email格式,ex: somename@edu.tw

RP 依賴方(Relying Party, RP),如果我的網站想用教育部的帳號登入,我的網站就可以說是一個依賴方

IdP 提供者(identity provider, IdP),提供認證服務的人就叫作身分提供者

OP OPENID CONNECT提供者(OPENID Connect PROVIDER, OP),提供以OPENID CONNECT方式來認證者,可以叫作OPENID CONNECT提供者

取得各端點 URL

連結網址 https://oidc.tanet.edu.tw/.well-known/openid-configuration

內容如下:

{
  "issuer" : "https://oidc.tanet.edu.tw",
  "subject_types_supported" : [ "public" ],
  "jwks_uri" : "https://oidc.tanet.edu.tw/oidc/v1/jwksets",
  "authorization_endpoint" : "https://oidc.tanet.edu.tw/oidc/v1/azp",
  "token_endpoint" : "https://oidc.tanet.edu.tw/oidc/v1/token",
  "userinfo_endpoint" : "https://oidc.tanet.edu.tw/oidc/v1/userinfo",
  "scopes_supported" : [ "openid", "email", "profile" ],
  "response_types_supported" : [ "code id_token token" ],
  "id_token_signing_alg_values_supported" : [ "RS256" ],
  "id_token_encryption_alg_values_supported" : [ "A256KW" ],
  "id_token_encryption_enc_values_supported" : [ "A256CBC-HS512" ],
  "claim_types_supported" : [ "aggregated", "distributed", "normal" ],
  "claims_supported" : [ "aud", "email", "exp", "iat", "iss", "name", "sub" ],
  "claims_parameter_supported" : false,
  "request_parameter_supported" : false,
  "request_uri_parameter_supported" : true,
  "require_request_uri_registration" : false
}

取得CODE

"authorization_endpoint" : "https://oidc.tanet.edu.tw/oidc/v1/azp"

取得ACCESS TOKEN

"token_endpoint" : "https://oidc.tanet.edu.tw/oidc/v1/token"

取得USERINFO

"userinfo_endpoint" : "https://oidc.tanet.edu.tw/oidc/v1/userinfo",

PHP

取得endpoint函式

  public function getEndPoint($rtn_array=false){
    $options = array(
      'http' => array(
        'header'  => '',
        'method'  => 'GET',
        'content' => ''
      ));
    $context = stream_context_create($options);
    $result = file_get_contents(WELL_KNOWN_URL, false, $context);
    $u= json_decode($result, $rtn_array);
    return $u; //object
  }

若要將json結果轉換成陣列,帶入參數true,預設是物件。

getEndPoint(true) 執行的結果

Array ( [issuer] => https://oidc.tanet.edu.tw [subject_types_supported] => Array ( [0] => public ) [jwks_uri] => https://oidc.tanet.edu.tw/oidc/v1/jwksets [authorization_endpoint] => https://oidc.tanet.edu.tw/oidc/v1/azp [token_endpoint] => https://oidc.tanet.edu.tw/oidc/v1/token [userinfo_endpoint] => https://oidc.tanet.edu.tw/oidc/v1/userinfo [scopes_supported] => Array ( [0] => openid [1] => email [2] => profile ) [response_types_supported] => Array ( [0] => code id_token token ) [id_token_signing_alg_values_supported] => Array ( [0] => RS256 ) [id_token_encryption_alg_values_supported] => Array ( [0] => A256KW ) [id_token_encryption_enc_values_supported] => Array ( [0] => A256CBC-HS512 ) [claim_types_supported] => Array ( [0] => aggregated [1] => distributed [2] => normal ) [claims_supported] => Array ( [0] => aud [1] => email [2] => exp [3] => iat [4] => iss [5] => name [6] => sub ) [claims_parameter_supported] => [request_parameter_supported] => [request_uri_parameter_supported] => 1 [require_request_uri_registration] => )

其中的endpoint 就是我們接下來會用到的。

下一篇

[PHP] OPENID CONNECT #1 取得ACCESS TOKEN

END

你可能感興趣的文章

[DNS管理系統] DNS的運作及學校切換DNS集中化 dns的運作原理簡介及說明學校切換集中化後,差別是什麼?

好用的線上中文打字網頁推薦 台中大德國小吳嘉祥師寫的線上打字測驗程式,安裝簡易可自訂文章,非常好用,我都拿來測學生中文打字。

[PHP] OPENID CONNECT #4 程式下載及安裝 要使用教育部的本部帳號使用OPENID CONNECT,PHP的範例程式。

教育部OPENID帳號管理服務使用說明 教育部OPENID帳號管理服務系統使用說明 系統簡介 教育部OPENID帳號管理系統,主要處理帳號的問題,例如個人資料修

[PHP] OPENID CONNECT #2 取得USERINFO及PROFILE 此文分為幾個部分: [PHP] OPENID CONNECT #0 簡介及取得URL [PHP] OPENID CONN

[PHP] OPENID CONNECT #0 簡介及取得URL 教育部在全國性的OPENID CONNECT帳號服務,PHP程式說明文件及範例。

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

郵票的增值、保值和貶值 此文為網路文章,來源佚失。(原收錄於2008-11-24 15:32:23)應有20年以上的歷史,內容寫得不錯,故收錄於

保持低調和隱藏的態度 當我們常常認為別人的成功是運氣的因素時,我們就離成功越來越遠,而離憤恨和不滿越來越近..

如何拆米袋 如何拆米袋 我不會拆米袋,以前曾為了拆米袋那條縫線傷透腦筋,上網找文章竟然找不到,沒人教怎麼拆米袋。 非常呆,弄了很久,

2017核能、火力、水力發電量數據 核能、火力、水力發電量數據,持續更新中

來玩玩中市教育局棋吧 把陸軍棋改成教育局棋有沒有人想玩呢?