0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Oracle Apex ログイン方法カスタマイズ

Last updated at Posted at 2024-12-05

Oracle Apex ログイン方法カスタマイズ方法

目標

APEX 標準のログイン認証(APEX アカウント)を、データベース内のユーザーデータに基づく認証方式に変更する。

1. カスタムユーザーデータベースの作成

  • ステップ1: ユーザーテーブルの作成
    以下の SQL を使用して、ユーザー情報を保存するテーブルを作成します。
CREATE TABLE CUSTOM_USERS (
    USER_ID NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    USERNAME VARCHAR2(50) NOT NULL UNIQUE,
    PASSWORD_HASH VARCHAR2(255) NOT NULL,
    FULL_NAME VARCHAR2(100),
    EMAIL VARCHAR2(100),
    CREATED_AT DATE DEFAULT SYSDATE
);
  • ステップ2: サンプルデータの追加
    テスト用のデータを挿入します。
INSERT INTO CUSTOM_USERS (USERNAME, PASSWORD_HASH, FULL_NAME, EMAIL)
VALUES ('test_user', DBMS_CRYPTO.HASH(UTL_I18N.STRING_TO_RAW('password123', 'AL32UTF8'), 2), 'テストユーザー', 'test_user@example.com');

COMMIT;

注: DBMS_CRYPTO.HASH を使用して、パスワードをハッシュ化します。

2.PL/SQL 認証ロジックの作成

認証用関数の作成
以下の PL/SQL 関数を作成して、ユーザー名とパスワードを検証します。

コードをコピーする
CREATE OR REPLACE FUNCTION AUTHENTICATE_USER (
    P_USERNAME IN VARCHAR2,
    P_PASSWORD IN VARCHAR2
) RETURN BOOLEAN IS
    L_PASSWORD_HASH VARCHAR2(255);
BEGIN
    -- データベースからパスワードハッシュを取得
    SELECT PASSWORD_HASH
    INTO L_PASSWORD_HASH
    FROM CUSTOM_USERS
    WHERE USERNAME = P_USERNAME;

    -- 入力されたパスワードのハッシュを比較
    IF L_PASSWORD_HASH = DBMS_CRYPTO.HASH(UTL_I18N.STRING_TO_RAW(P_PASSWORD, 'AL32UTF8'), 2) THEN
        RETURN TRUE;
    ELSE
        RETURN FALSE;
    END IF;
EXCEPTION
    WHEN NO_DATA_FOUND THEN
        -- ユーザー名が存在しない場合
        RETURN FALSE;
END AUTHENTICATE_USER;

3. APEXの認証方法の設定

  • ステップ1: APEX アプリケーションを開く
    APEX にログインします。
    認証を変更したいアプリケーションを選択します。

  • ステップ2: 認証方式の変更
    Shared Components > Authentication Schemes を開きます。
    Create をクリックして新しい認証方式を作成します。
    Based on a PL/SQL Function を選択。
    次の情報を入力:
    Name: カスタム認証
    Authentication Function Name: return AUTHENTICATE_USER(:P101_USERNAME, :P101_PASSWORD);
    変更を保存。

  • ステップ3: ログインページのカスタマイズ
    ログインページ(通常は Page 101)を編集。
    P101_USERNAME と P101_PASSWORD をユーザー名とパスワードの入力項目として設定。
    APEX 標準のロジックを削除。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?