Skip to content
Branch: master
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
app
bootstrap
config
database
public
resources
routes
storage
tests
.editorconfig
.env.example
.gitattributes
.gitignore
.styleci.yml
README.md
artisan
composer.json
composer.lock
package.json
phpunit.xml
server.php
webpack.mix.js

README.md

クライアントアプリ (Laravel) から Laravel Passport でログイン

前提

具体的な実装

  • client/app/Http/Controllers/SampleController.php ログインするための処理は全てここに集約しました。
  • client/config/services.php
    • Laravel Passport でログインするための、 client id 等の設定をまとめました。
  • client/resources/views/sample/index.blade.php
    • Laravel Passport でログインするボタンを設置しました。
  • client/routes/web.php
    • ログインするために必要なルートを定義しました。

設定は、 .env に書きますが、たとえば次のようになりました。 注) LARAVELPASSPORT_AUTH_URI と LARAVELPASSPORT_TOKEN_URI の FQDN は Laravel Passport サーバとします。したがって本来ならば同じとなります。今回は、 Docker を使ってサンプルを構築した関係で、リダイレクトするときは Docker ホストから見た FQDN を、Guzzle でリクエストするときは Docker コンテナから見た FQDN となったため、異なっています。

LARAVELPASSPORT_KEY=2
LARAVELPASSPORT_SECRET=eI7yOgFrNn9CiMRmL7i7inSMyjDoluGetbOLPXfn
LARAVELPASSPORT_REDIRECT_URI=https://localhost:4433/sample/callback
LARAVELPASSPORT_AUTH_URI=https://localhost/oauth/authorize
LARAVELPASSPORT_TOKEN_URI=https://nginx/oauth/token

作ったものを動かしてみてわかったこと

"クライアントアプリで、Laravel Passport でログイン" -> ログイン画面 -> Authorize -> クライアントアプリ Laravel Passport 側で、 Remember Me にチェックを打っておくと、次の "Laravel Passport でログイン" の認証処理をすっ飛ばせる。

クライアントアプリへ認証からコールバックで戻ってきて、次は Laravel Passport へ POST リクエストし許可コードからアクセストークンへの変換を行うという時、リクエストまでの時間が長すぎると次のエラーになった。

[2019-09-14 23:34:11] local.ERROR: Client error: `POST https://nginx/oauth/token` resulted in a `400 Bad Request` response:
{"error":"invalid_request","error_description":"The request is missing a required parameter, includes an invalid paramet (truncated...)
 {"exception":"[object] (GuzzleHttp\\Exception\\ClientException(code: 400): Client error: `POST https://nginx/oauth/token` resulted in a `400 Bad Request` response:
 {\"error\":\"invalid_request\",\"error_description\":\"The request is missing a required parameter, includes an invalid paramet (truncated...)
  at /var/www/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:113)
 [stacktrace]
#0 /var/www/vendor/guzzlehttp/guzzle/src/Middleware.php(66): GuzzleHttp\\Exception\\RequestException::create(Object(GuzzleHttp\\Psr7\\Request), Object(GuzzleHttp\\Psr7\\Response))

足りていないところ

You can’t perform that action at this time.