SAML および OIDC アプリで毎回ユーザー認証を強制する方法

アクティブなセッションがあっても、ユーザーがアプリケーションにアクセスするたびに認証を行うようにする必要がある場合があります。これは、セキュリティの強化やコンプライアンス要件を満たすために役立ちます。OpenID Connect(OIDC)と SAML の両方のアプリケーションでこの動作を設定する方法は次のとおりです。


OIDC アプリの場合: prompt=login パラメーターを使用する

OpenID Connect(OIDC)では、認可リクエストに prompt=login パラメーターを含めることで、ユーザー認証を強制できます。これにより、既存のセッションにかかわらず、ユーザーはアプリにアクセスするたびにログインを求められます。

例:OIDC 認可リクエスト

https://login.microsoftonline.com/common/oauth2/v2.0/authorize
?response_type=code
&client_id=blf6xxxx-xxxx-xxxx-21cd2263xxxx
&redirect_uri=https://jwt.ms
&scope=openid profile User.Read
&prompt=login

主要なパラメーターの説明

  • response_type=code:認可コードフローを指定します。
  • client_id:アプリケーションの一意の識別子。
  • redirect_uri:認証後にユーザーをリダイレクトする URI。
  • scope:アプリが要求する権限を定義します。
  • prompt=login:ユーザーに毎回認証を強制します。

SAML アプリの場合: ForceAuthn 属性を使用する

SAML では、 ForceAuthn 属性を true に設定することで、認証リクエストで同じ効果が得られます。これにより、アクティブなセッションがあっても、ID プロバイダー(IdP)はユーザーに認証を要求します。

例:SAML 認証リクエスト

<samlp:AuthnRequest 
    xmlns="urn:oasis:names:tc:SAML:2.0:metadata" 
    ID="C2d2FH4oiJ5kL6mN7oPQgR9tOUvIw" 
    Version="2.0" 
    IssueInstant="2013-03-18T03:28:54.1839884Z" 
    xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
    <ForceAuthn>true</ForceAuthn>
    <Issuer 
        xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
        https://www.contoso.com
    </Issuer>
</samlp:AuthnRequest>

主要な属性の説明

  • ForceAuthn=true:IdP がユーザーに認証を要求することを保証します。
  • Issuer:認証リクエストを行うエンティティを識別します。

なぜ認証を強制するのか?

ユーザーがアプリケーションにアクセスするたびに認証を強制することは、次のようなシナリオで有益です。

  • セキュリティの強化:古いセッションによる不正アクセスを防止します。
  • コンプライアンス:頻繁な認証に関する規制要件を満たします。
  • 機密性の高いアプリケーション:重要または機密データを扱うアプリを保護します。

まとめ

OIDC と SAML のどちらを使用している場合でも、ユーザー認証を強制することで、アプリケーションへのアクセスに対するセキュリティと制御を高めることができます。この機能を効果的に実装するには、OIDC アプリでは prompt=login を、SAML アプリでは ForceAuthn=true を使用してください。

コメントを残す