このサンプルでは、OAuth2のプロバイダとクライアントが共存しています。また、飽くまで処理フローを確認するための簡単なサンプルですので、適宜、プロジェクトを分けたり、バックグラウンド処理にするなどの工夫が必要になります。
--
たぶん、初Laravelネタです。
"oauth2-server-laravel"という、OAuth2プロバイダ(クライアントではない)用のパッケージがあったので、試してみました。
https://github.com/lucadegasperi/oauth2-server-laravel
このパッケージは、以下のライブラリをLaravel用にラップしているようです。
https://github.com/thephpleague/oauth2-server
また、今回作成したサンプルプロジェクトを、GitHubにアップしてあります。
https://github.com/mamor/laravel-oauth2-server-sample
このサンプルプロジェクトは、以下の手順で動かせます。
ソースをインストールします。
$ git clone https://github.com/mamor/laravel-oauth2-server-sample.git $ cd laravel-oauth2-server-sample $ composer install次に、app/config/database.phpを正しく設定します。また、app/config/app.phpの"url"をブラウザからアクセスするURLに変更します。後述のシーダと、フォームの初期値で使用している為です。私の手元の環境(掲載しているキャプチャ)では"http://192.168.33.10/oauth2"になっています。
$ php artisan migrate --package="lucadegasperi/oauth2-server-laravel" $ php artisan migrate --seedトップ画面にアクセスすると、(リダイレクトされて)ログイン画面が表示されます。
以下でログインできます。
email: your-email@example.com
password: password
ログインに成功すると、OAuth2認証用のフォームが表示されます。必要な値はセットされているので、そのまま送信ボタンを押してOKです。
OAuth2認証に成功すると"code"値が付いて"/callback"にリダイレクトされます。この画面は、access_tokenを発行するためのフォームです。この画面でも、必要な値はセットされているので、そのまま送信ボタンを押してOKです。
access_tokenが発行されました。
試しに、各scopeにアクセスしてみます。
/scope1?access_token={発行されたアクセストークン}
/scope2?access_token={発行されたアクセストークン}
scope3だけがエラーになればOKです。前述のリクエストで"scope"値を"scope1,scope2"としている為です。
ソース周りは https://github.com/mamor/laravel-oauth2-server-sample/commits/master をご覧頂ければと思います。
細かな機能はまだ把握できていませんが、OAuth2そのものの仕様と、冒頭に記載したOAuth2ライブラリの説明やソースを確認しながら。という感じでしょうか。
以上です。
No comments:
Post a Comment