PHP的oAuth服務架構

2022-03-15 19:25:48 字數 4326 閱讀 6056

**完成之後我們將解壓大www目錄,目錄結構如下圖,同時我們需要把oauth-php/library/store/mysql匯入到資料庫,通過同級目錄下的install.php匯入(install.php**需要做修改詳細**見下面php code)。

其中的myoauthserver自己所建立的資料夾,分別建立以下檔案:

每個檔案的**分別如下

平板檢視

列印01 //add_server.php

02 include_once'config.inc.php';

03 include_once'../library/oauthstore.php';

04

05 $store= oauthstore::instance('mysql',$dboptions);

06

07 // 當前使用者的id, 必須為整數

08 $user_id= 1;

09

10 // 伺服器描述資訊

11 $server=array(

12 'consumer_key'=>'eb4fddcdd368842837a55d9082e652b904f465adb',

13 'consumer_secret'=>'47415be2a343b74f978f3863faa66a56',

14 'server_uri'=>'',

15 'signature_methods'=>array('hmac-sha1','plaintext'),

16 'request_token_uri'=>'request_token.php',

17 'authorize_uri'=>'authorize.php',

18 'access_token_uri'=>'access_token.php'

19 );

20

21 // 將伺服器資訊儲存在 oauthstore 中

22 $consumer_key=$store->updateserver($server,$user_id);

平板檢視

列印?01

02 /*session_start();

03

04 if (empty($_session['authorized']))

05 */

10

11 include_once'config.inc.php';

12 include_once'../library/oauthstore.php';

13 include_once'../library/oauthserver.php';

14

15 //登陸使用者

16 $user_id= 1;

17

18 // 取得 oauth store 和 oauth server 物件

19 $store= oauthstore::instance('mysql',$dboptions);

20 $server=newoauthserver();

21

22 try

23

41 else

42

45 }

46 catch (oauthexception$e)

47

平板檢視

列印?1

2 // 資料庫連線資訊

3 $dboptions=array(

4 'server'=>'localhost',

5 'username'=>'root',

6 'password'=>'admin',

7 'database'=>'oauth'

8 );

平板檢視

列印?01

02

03 <?php 04 if(isset($_get['req']) && ($_get['req'] == 1))

22 else

43 ?>

平板檢視

列印?01 //oauth_register.php

02 // 當前登入使用者

03 $user_id= 1;

04

05 // 來自使用者表單

06 $consumer=array(

07 // 下面兩項必填

08 'requester_name'=>'fising',

09 'requester_email'=>'[email protected]',

10

11 // 以下均為可選

12 'callback_uri'=>'',

13 'application_uri'=>'',

14 'application_title'=>'online printer',

15 'application_descr'=>'online print your photoes',

16 'application_notes'=>'online printer',

17 'application_type'=>'website',

18 'application_commercial'=> 0

19 );

20

21 include_once'config.inc.php';

22 include_once'../library/oauthstore.php';

23

24 // 註冊消費方

25 $store= oauthstore::instance('mysql',$dboptions);

26 $key=$store->updateconsumer($consumer,$user_id);

27

28 // 獲取消費方資訊

29 $consumer=$store->getconsumer($key,$user_id);

30

31 // 消費方註冊後得到的 app key 和 app secret

32 $consumer_id=$consumer['id'];

33 $consumer_key=$consumer['consumer_key'];

34 $consumer_secret=$consumer['consumer_secret'];

35

36 // 輸出給消費方

37 echo'your app key: '.$consumer_key;

38 echo'

39 ';

40 echo'your app secret: '.$consumer_secret;

平板檢視

列印?01 //request_token.php

02 include_once'config.inc.php';

03 include_once'../library/oauthstore.php';

04 include_once'../library/oauthserver.php';

05

06 $store= oauthstore::instance('mysql',$dboptions);

07

08 $server=newoauthserver();

09 $server->requesttoken();

10 exit();

平板檢視

列印?01 /**

02 * installs all tables in the mysql.sql file, using the default mysql connection

03 */

04

05 /* change and uncomment this when you need to: */

06

07 /*

08 mysql_connect('localhost', 'root');

09 if (mysql_errno())

10

13 mysql_select_db('test');

14 */

15

16 $sql=file_get_contents(dirname(__file__) .'/mysql.sql');

17 $ps=explode('#--split--',$sql);

18

19 foreach($psas$p)

20

28 }

架構 SSO 與 OAuth2 0 的區別

是open authority 的縮寫,是令牌代替使用者密碼訪問應用的又一標準,前面一期介紹過 sso單點登入 springboot模擬單點登入 也是令牌登陸的一種方式。最典型的授權碼認證方式 和clientid 的校驗校驗通過後要對 token 訪問許可權做好限制 接受第三方應用的申請,維護 cl...

PHP架構 PHP核心

php核心 執行過程 啟用和執行php直譯器有幾個關鍵步驟 當乙個應用程式想啟動乙個php直譯器,首先呼叫php module startup。這個函式是直譯器的主開關。它啟用註冊過的sapi,初始化輸出快取系統,啟動zend引擎,讀入php.ini檔案,啟用配置,準備好處理第一次請求。核心模組使用...

手遊伺服器php架構比較

從swoole專案開始到現在,一直有人在問這個問題。今天來抽空講一下它。為什麼swoole非要使用純c來寫而不是php 來實現,核心的原因有2點 如sendfile eventfd timerfd pthread等等,這裡就不一一枚舉了,所以純php實現的 phpdaemon,reactphp,還有...