【SimpleSAMLphp】未処理例外が投げられました

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【SimpleSAMLphp】未処理例外が投げられました

2023-12-15 | ,

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:AssertionConsumerServiceLocationの値になる。https://example.com/simplesamlphp/public/module.php/saml/sp/saml2-acs.php/google-workspaceのような感じ。

私の場合は間違って「SAML Metadata」の値を「ACRのURL」に入力してしまってこのエラーがでたという悲しみ。

まとめ(感想文)

これを修正するのにかなり時間がかかった。ただ修正のためにSimpleSAMLphpのソースを確認したり、設定ごにょごにょしたりしてて、SimpleSAMLphpとSAML認証についての理解が進んだという副産物。