Oracle Databaseは、通常のパスワード認証だけでなく外部認証という機能があります。
以前紹介したActive Directory連携もその一つですが、クラウドのIDaaSとOAauth2によるトークン・ベース認証も19cからサポートされており、現在はOCI IAMとAzure ADが使用可能です。
Azure ADは、19.18以上のOracle Databaseはオンプレミス、クラウドに関わらず認証連携させることが可能です。OCI IAMは、Autonmous DatabaseやBase DatabaseなどのクラウドのOracle Databaseが対象で、接続のDatabase Clientが19.16以上が必要などの制限がありますので詳しくは最新のドキュメントをご確認下さい。
アクセストークンをデータベースに渡すフローは、TLSで暗号化されている必要があるため、データベース側のリスナーをTCPSでリスニングする設定が追加で必要になります。Autonomous Databaseは、WalletをダウンロードしてTLS接続しかできない仕様になっているのでこの設定は必要ないですが、一般的なOracle Databaseのリスナーは通常1521ポートのTCPだけでリスニングしていると思いますので、まずはこのTLSの設定を行います。
TLSは、クライアント側にOracle Walletを配置する方法、もしくはWalletなしでサーバー証明書だけの方法のいずれかが選択可能です。詳しくはこちら。
ドキュメントを参照しながら実際に設定してみると難しく感じるところも多いように思います。Qiita内でも手順が紹介されているものもありますが、私自身の備忘録的にも、それぞれの手順について簡単に極力最小限の労力で構築する手順を紹介します。
Oracle Databaseの外部認証 - Oracle DatabaseのTLS接続 -
Oracle Databaseの外部認証 - OCI IAMとBaseDBのトークン・ベースの認証連携① -
Oracle Databaseの外部認証 - OCI IAMとBaseDBのトークン・ベースの認証連携② -
OCI IAMとAutonomous Databaseのトークン・ベースの認証連携
Azure AD(Entra ID)の場合は、上記手順のOracle DatabaseをTLS暗号に設定した後、以下の有志の記事の手順が参考になります。少し古くなっているかもしませんので、ドキュメントも併せて参照下さい。
Azure ADの場合もIAMと同様に排他的マッピングと共有マッピングの方式ができるので、併せて確認頂くと良いかと思います。
Azure ADのトークンでOracle Base Databaseに認証する
Oracle DatabaseのMicrosoft Azureユーザーの認証および認可