【SimpleSAMLphp】未処理例外が投げられました
2023-12-15 | SAML, SimpleSAMLphp
SimpleSAMLphpで「未処理例外が投げられました」というエラーが表示されてSAML認証できないのをなんとかしたい!
概要
今回の記事では、SimpleSAMLphpで「未処理例外が投げられました」というエラーが表示されてSAML認証できないのをなんとかする手順を掲載する。
仕様書
環境
- Ubuntu 20.04.4 LTS
- Apache 2.4.41
- PHP 8.0.30
- SimpleSAMLphp 2.1.1
手順書
こんな感じのエラーをなんとかしたい!
未処理例外とだけ見ると範囲が広すぎて原因が全く分からないのだけども、デバッグ情報を見るともうちょっといろいろ出力されてる。
SimpleSAML\Error\Error: UNHANDLEDEXCEPTION
Backtrace:
2 src/SimpleSAML/Error/ExceptionHandler.php:32 (SimpleSAML\Error\ExceptionHandler::customExceptionHandler)
1 vendor/symfony/error-handler/ErrorHandler.php:541 (Symfony\Component\ErrorHandler\ErrorHandler::handleException)
0 [builtin] (N/A)
Caused by: Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException: No route found for "POST https://example.com/simplesamlphp/public/module.php/saml/sp/metadata/google-workspace": Method Not Allowed (Allow: GET)
Backtrace:
7 vendor/symfony/http-kernel/EventListener/RouterListener.php:134 (Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest)
6 vendor/symfony/event-dispatcher/EventDispatcher.php:230 (Symfony\Component\EventDispatcher\EventDispatcher::callListeners)
5 vendor/symfony/event-dispatcher/EventDispatcher.php:59 (Symfony\Component\EventDispatcher\EventDispatcher::dispatch)
4 vendor/symfony/http-kernel/HttpKernel.php:139 (Symfony\Component\HttpKernel\HttpKernel::handleRaw)
3 vendor/symfony/http-kernel/HttpKernel.php:75 (Symfony\Component\HttpKernel\HttpKernel::handle)
2 vendor/symfony/http-kernel/Kernel.php:202 (Symfony\Component\HttpKernel\Kernel::handle)
1 src/SimpleSAML/Module.php:234 (SimpleSAML\Module::process)
0 public/module.php:17 (N/A)
見るところは下記の部分。
Caused by: Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException: No route found for "POST https://example.com/simplesamlphp/public/module.php/saml/sp/metadata/google-workspace": Method Not Allowed (Allow: GET)
GET
はできるけどPOST
ができないって感じのことが出力されてるんだけども、これはそもそもIDP(前述の例だとGoogle Workspace)側の「ACRのURL」に入力するURLが間違ってる。Microsoft Entraの場合の項目名は「応答URL(Assertion Consumer Service URL)」。
正しい値はmd:AssertionConsumerService
のLocation
の値になる。https://example.com/simplesamlphp/public/module.php/saml/sp/saml2-acs.php/google-workspace
のような感じ。
私の場合は間違って「SAML Metadata」の値を「ACRのURL」に入力してしまってこのエラーがでたという悲しみ。
まとめ(感想文)
これを修正するのにかなり時間がかかった。ただ修正のためにSimpleSAMLphpのソースを確認したり、設定ごにょごにょしたりしてて、SimpleSAMLphpとSAML認証についての理解が進んだという副産物。