2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ApacheのWebサイトでEntraID認証(OIDC)を行う

2
Last updated at Posted at 2026-11-07

サイバー攻撃が巧妙化する中、ID/パスワードだけの認証では守りきれない時代になり、従来のBASIC認証などでは、限界が出てくる場面があります。
EntraIDのOIDC機能を利用したWebサイトの認証をアプリケーションに依存せずApacheの機能で実現します・
環境は、RockyLinux 10.2で行っていますが、ソースからコンパイルしているので、他のLinuxディストリビューションでも利用可能かと思います。

1.インストール

#jansson
cd /usr/local/src
curl -LO https://github.com/akheron/jansson/releases/download/v2.15.1/jansson-2.15.1.tar.gz
tar xvzf jansson-2.15.1.tar.gz
cd jansson-2.15.1
./configure
make
make install

#cjose
cd /usr/local/src
curl -LO https://github.com/cisco/cjose/archive/refs/tags/0.8.0.tar.gz
tar xvzf 0.8.0.tar.gz
cd cjose-0.8.0/
./configure --with-openssl=/lib64 --with-jansson=/usr/local/lib
make
make install

#mod_auth_openidc
cd /usr/local/src
curl -LO https://github.com/OpenIDC/mod_auth_openidc/archive/refs/tags/v2.4.20.4.tar.gz
tar xvzf v2.4.20.4.tar.gz
cd mod_auth_openidc-2.4.20.4/
./autogen.sh
export  PKG_CONFIG_PATH=/usr/local/apr/lib/pkgconfig:/usr/local/lib/pkgconfig
./configure --with-apxs=/usr/local/apache2/bin/apxs
make
make install

2.パスフレーズを生成する

openssl rand -hex 32
#この出力結果を控えておく
d86d274712f91xxxx5437xxxxf237xxxx2120c4xxxx7bd6e3xxxx322abxxxx2f

3.EntraIDの設定を行う

EntraID設定画面から、アプリケーションの登録を行う

image.png

リダイレクトURLを登録する

image.png

アプリケーション(クライアントIDを控える) OIDCClientID

image.png

トークンの発行を行う OIDCClientSecret

image.png

"値"を控えておく
image.png

テナントIDを確認する OIDCProviderMetadataURL

image.png

4.Apacheの設定ファイルを追加する

モジュールの読み込み

LoadModule auth_openidc_module modules/mod_auth_openidc.so

ApacheのVirtualHost設定に追加する

<VirtualHost *:443>

    ServerName www.example.com
    DocumentRoot /var/www/html

    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/example.crt
    SSLCertificateKeyFile /etc/pki/tls/private/example.key

    # OpenID Connect設定
    OIDCProviderMetadataURL https://login.microsoftonline.com/<テナントID>/v2.0/.well-known/openid-configuration

    OIDCClientID <アプリケーション(クライアントID)>
    OIDCClientSecret <発行したトークンの値>

    OIDCProviderTokenEndpointAuth client_secret_post

    OIDCResponseType code
    OIDCScope "openid profile"
    
    OIDCRedirectURI <EntraIDで設定したリダイレクトURI>

    #2.で発行したパスフレーズを記載
    OIDCCryptoPassphrase d86d274712f91xxxx5437xxxxf237xxxx2120c4xxxx7bd6e3xxxx322abxxxx2f

    OIDCRemoteUserClaim preferred_username

    # 認証対象
    <Location /private/>
        AuthType openid-connect
        Require valid-user
    </Location>

</VirtualHost>

注意事項

1.リダイレクトURLの不一致

EntraIDのアプリケーション登録時に登録したリダイレクトURIとApacheで設定したRedirectURIと異なるとEntraIDの認証後にエラーになる。
EntraID側の設定を変える場合「アプリの登録」→「登録したアプリケーション名」→「Authentication (Preview)
」の「リダイレクトURI」から変更を行う

image.png

2.リダイレクト専用ページの用意

今回SSOに未対応なアプリケーションを2要素認証にするためOIDCの認証を有効化したのですが、元のアプリが、index.phpもしくは、/でおわるURLのように、本来アプリケーションが1番最初に開きたいページをリダイレクト先にすると、EntraIDへのリダイレクトがエンドレスになる事象が発生しました。
この場合、redirect.htmlのような何らかのページを用意し、そのページから本来最初に見せるべきページへリンクを張るとかHTMLでリダイレクトさせると、SSOの無限リダイレクトを抑止できます。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?