の検索結果 :

×

Laravel を OAuth / OpenID Connect プロバイダーとして使用して Drupal に SSO ログインする


Drupal OAuth / OpenID Connect SSO の統合により、Drupal サイトと Laravel Passport 間の SSO が可能になります。 このセットアップ ガイドは、設定に役立ちます シングル・サインオン OAuth / OpenID Connect モジュールを使用した Drupal サイトと Laravel Passport 間の (SSO)。 このモジュールは Drupal 7、Drupal 8、Drupal 9、および Drupal 10 と互換性があります。 OAuth / OpenID Connect モジュールを Drupal サイトに組み込むと、Laravel Passport 資格情報を使用して Drupal サイトにシームレスにログインできます。

インストール手順:


  • モジュールをダウンロードします。
    コンポーザーには「drupal/miniorange_oauth_client」が必要です
  • MFAデバイスに移動する 広がります Drupal 管理コンソールのメニューから検索します。 miniOrange OAuth クライアント構成 検索ボックスを使用して。
  • チェックボックスをオンにしてモジュールを有効にし、 インストールを開始する
  • モジュールは次の場所で設定できます。
    {BaseURL}/admin/config/people/miniorange_oauth_client/config_clc
  • モジュールをインストールします。
    drush と drupal/miniorange_oauth_client
  • キャッシュをクリアします。
     ダッシュCR
  • モジュールは次の場所で設定できます。
    {BaseURL}/admin/config/people/miniorange_oauth_client/config_clc
  • MFAデバイスに移動する 広がります Drupal 管理コンソールのメニューをクリックし、 新しいモジュールを取り付け.
  • Drupal をインストールする OAuth および OpenID Connect ログイン - OAuth2 クライアント SSO ログイン zip をダウンロードするか、次の URL からモジュールをダウンロードします。 パッケージ (tar/zip).
  • ソフトウェアの制限をクリック 新しく追加されたモジュールを有効にする.
  • チェックボックスをオンにしてこのモジュールを有効にし、 install
  • モジュールは次の場所で設定できます。
    {BaseURL}/admin/config/people/miniorange_oauth_client/config_clc

Drupal を OAuth クライアントとしてセットアップします。

  • Drupal サイトで、次の場所に移動します。   -> miniOrange OAuth クライアント構成 -> OAuthの構成 タブには何も表示されないことに注意してください。
  • OAuth/OpenID Connect シングル サインオンとしての Drupal - Naviagte 構成 - miniOrange OAuth クライアント構成
  • 選択 カスタム OAuth 2.0 プロバイダー アプリケーションの選択 落ちる。
  • コピー コールバック/リダイレクト URL そして手元に置いておいてください。
  • Note: プロバイダーが HTTPS のみをサポートしている場合 コールバック/リダイレクト URL HTTP サイトをお持ちの場合は、必ず有効にしてください。HTTPS コールバック URL を強制する' タブの下部にあるチェックボックスをオンにします。

  • 「Laravel」をアプリケーション名として入力します。 表示名 テキストフィールド。
  • OAuth/OpenID Connect シングル サインオンとしての Drupal - [OAuth の構成] で - [アプリケーションの選択] からカスタム OAuth 2.0 プロバイダーを選択 - コールバックのコピー

Laravel Passport で OAuth / OpenID SSO アプリケーションを作成します。

  • コマンドを使用してローカルマシン上にlaravelプロジェクトを作成し、設定します。
    作曲家 create-project --prefer-dist laravel/laravel ブログ
  • 次を使用してディレクトリをブログに変更します CDブログ 指示。 laravelパスポートをインストールします。
    作曲家にはlaravel/パスポートが必要です
  • config/app.php に移動し、以下のプロバイダーを追加します
    Laravel\Passport\PassportServiceProvider::class
  • 以下のコマンドを実行します
    PHP職人が移行する
    php 職人パスポート:インストール
  • に行く app/User.php モデルクラス、追加 HasApiTokens コードの特徴:
        名前空間アプリ。
        Laravel\Passport\HasApiTokens を使用します。
        Illuminate\Contracts\Auth\MustVerifyEmail を使用します。 Illuminate\Foundation\Auth\User を認証可能として使用します。 Illuminate\Notifications\Notifiable を使用します。 クラス ユーザーが Authenticatable を拡張 {
          HasApiTokens を使用し、通知可能。
         
          
            /** * 一括割り当て可能な属性。 * * @var 配列 */
            
            protected $fillable = [ '名前', 'メールアドレス', 'パスワード', ];
         
            /** * 配列に対して非表示にする必要がある属性。 * * @var 配列 */
            protected $hidden = [ 'パスワード', 'remember_token', ];
         
            /** * ネイティブ型にキャストする必要がある属性。 * * @var 配列 */
           
            protected $casts = [ 'email_verified_at' => '日時', ]; }
        
  • に行く app/Providers/AuthServiceProvider.php追加 Laravel\Passport\Passport を使用します。 、パスポート::ルート(); サービスコードへのルート:
        名前空間 App\Providers;
        Laravel\Passport\Passport を使用します。
        Illuminate\Foundation\Support\Providers\AuthServiceProvider を ServiceProvider として使用します。 Illuminate\Support\Facades\Gate を使用します。 class AuthServiceProvider extends ServiceProvider {
        
            /** * アプリケーションのポリシー マッピング。 * * @var 配列 */
            protected $policies = [ // 'App\Model' => 'App\Policies\ModelPolicy', ];
         
            /** * 認証/認可サービスを登録します。 * * @return void */
            public function boot() { $this->registerPolicies();
                パスポート::ルート();
                // } }
       
  • に行く config/auth.php そして、 API ドライバートークンへの パスポート パスポートライブラリを使用するので。
        'ガード' => [ 'ウェブ' => [ 'ドライバー' => 'セッション', 'プロバイダー' => 'ユーザー', ], 'api' => [
                    「ドライバー」 => 「パスポート」、
                    'プロバイダ' => 'ユーザー'、'ハッシュ' => false、]、]、
        

Drupal と Laravel の統合:

  • Laravel ポータルに移動し、次のコマンドを実行して取得します。 顧客ID & クライアントシークレット:
    php 職人パスポート: クライアント
  • 次のような質問が表示されます。
        クライアントをどのユーザー ID に割り当てる必要がありますか?: > 1 クライアントに名前を付けるにはどうすればよいですか?: > デモ OAuth2 クライアント アカウント 承認後、リクエストをどこにリダイレクトする必要がありますか? > コールバック/リダイレクト URL を貼り付けます。 新しいクライアントが正常に作成されました。 クライアント ID: 1 クライアント シークレット: zMm0tQ9Cp7LbjK3QTgPy1pssoT1X0u7sg0YWUW01
        
  • クライアント ID とクライアント シークレットの値をコピーします。
  • Drupal のところに行く OAuthの構成 タブを押してコピーしたものを貼り付けます 顧客ID & クライアントの秘密 それぞれのテキストフィールドに入力します。
  • Drupal の [OAuth の設定] タブで、Laravel Passport-Application からのクライアント ID とクライアント シークレットを入力します。
  • UserInfo エンドポイントを手動で作成するには、 アプリ/HTTP/コントローラー、ファイルを作成します ユーザーコントローラー.php:
        <?php
        名前空間 App\Http\Controllers;
        App\Http\Controllers\Controller を使用します。
        Illuminate\Http\Request を使用します。
        App\Models\User を使用します。
        認証を使用します。
        クラス UserController はコントローラーを拡張します
        {
            パブリック関数 get(リクエスト $request)
            {
                $user_id = 認証::id();
                $user = ユーザー::find($user_id);
                $user を返します。
            }
        }
        
  • 以下の行を追加して API ルートを登録します。 ルート/api.php ファイル:
        //Laravel 8 より前のバージョンで、8 バージョンに移行した場合:
        Route::middleware('auth:api')->get('/user/get', 'UserController@get');
            OR
        //Laravel 8 の新規ユーザーの場合:
         App\Http\Controllers\UserController を使用します。 Route::middleware('auth:api')->get('/user/get', 'App\Http\Controllers\UserController@get');
        
  • 次のスコープとエンドポイントをコピーして、Drupal の [OAuth の構成] タブに貼り付けます。
    対象領域 openid メール プロファイル
    エンドポイントの承認 /oauth/承認
    アクセストークンエンドポイント /oauth/トークン
    ユーザー情報の取得エンドポイント /api/ユーザー/get
  • Drupal の [OAuth の設定] タブで、Laravel Passport アプリケーションからスコープとエンドポイントを指定します。
  • セットアップボタンをクリックすると、セットアップが開始されます 構成の保存

Drupal と Laravel 間の接続をテストする

  • セットアップボタンをクリックすると、セットアップが開始されます テスト構成の実行 ボタンをクリックして、Drupal と Laravel の間のシングル サインオン (SSO) 接続を確認します。
  • Drupal と Laravel Passport 間のシングル サインオン接続をテストする - [テスト構成の実行] をクリックします。
  • [テスト接続] ポップアップでは、同じブラウザ上の Laravel でアクティブなセッションがない場合、Laravel アカウントにサインインするように求められます。 Laravel アカウントに正常にログインすると、Laravel Passport から受け取った属性のリストが提供されます。
  • 現在地に最も近い 電子メールの属性 ユーザーの電子メールを取得するドロップダウン メニューから、 クリックします
  • Laravel から受け取る属性のリストを提供するには - ドロップダウン リストから [電子メール属性] を選択します。

ログインが機能するには、電子メール属性のマッピングが必須です。

おめでとう! Laravel Passport を OAuth/OpenID プロバイダーとして、Drupal を OAuth クライアントとして正常に構成しました。

SSO を実行するにはどうすればよいですか?

  • 次に、新しいブラウザ/プライベート ウィンドウを開いて、Drupal サイトのログイン ページに移動します。
  • セットアップボタンをクリックすると、セットアップが開始されます Laravelを使用してログインする Drupal から SSO を開始するためのリンク。
  • 他のページにも SSO リンクを追加したい場合は、以下の画像に示されている手順に従ってください。
  • Drupal OAuth OpenID Single Single-On - Drupal サイトの別のページにログイン リンクを追加します

手伝いが必要?

構成中に問題が発生した場合、または追加機能が必要な場合は、次のアドレスまでお問い合わせください。 drupalsupport@xecurify.com.

追加機能:

トラブルシューティング:

エラーが発生します:「ユーザー名を受信できませんでした。」 属性マッピング構成を確認してください。 または、エラーが発生する: 「電子メールが受信されませんでした。」 属性マッピング構成を確認してください。
 

記載されている手順に従ってください こちら

テスト構成を実行しようとすると、「ヘッダーまたは本文にクライアント資格情報が見つかりませんでした」というメッセージが表示されます。
 

記載されている手順に従ってください こちら

Drupal でログアウトをクリックすると、Drupal ホームページに戻ります。 ただし、他のユーザーでログインしようとすると、ログインを要求されず、同じユーザーで自動的にログインします。
 

ここで説明したログアウト機能は、モジュールのデフォルトの動作です。 Drupal からはログアウトされますが、アプリケーション/プロバイダーからはログアウトされません。 モジュールがプロバイダー/アプリケーション アカウント (探しているもの) からログアウトできるようにするには、以下の構成を行う必要があります。詳細を知って]

有料の Drupal モジュールを購入し、無料のモジュールに置き換えましたが、依然として有料の機能を使用できません。
 

Drupal モジュールの有料バージョンの XNUMX つにアップグレードし、無料モジュールを有料モジュールに置き換えたので、最初に有料モジュールをアクティブ化する必要があります。 以下の手順を参照してください。 [もっと知る]

よくある質問(FAQ)
 ケーススタディ
miniOrange は、柔軟性が高くカスタマイズ可能な Drupal ソリューションを使用して、400 を超える信頼できる顧客のユースケースに対応してきました。 これを使用した当社のユニークなケーススタディをぜひチェックしてください。 .
 その他のソリューション
弊社が提供する他の Drupal ソリューションをぜひお試しください こちら。 当社の信頼できる顧客が使用する一般的なソリューションには、2 要素認証 - XNUMXFA、Web サイト セキュリティ、REST および JSON API 認証、ユーザー プロビジョニング、同期などがあります。 
  24時間7日のアクティブサポート
miniOrange の Drupal 開発者は、クエリに対して迅速かつアクティブなサポートを提供します。 お客様のユースケースに最適なソリューションの選択から、ソリューションの導入と保守までを支援します。
こんにちは!

助けが必要? 私たちはここにいます!

サポート
miniOrange サポートにお問い合わせください
成功

お問い合わせありがとうございます。

24 時間以内に当社からのご連絡がない場合は、お気軽にフォローアップ メールを送信してください。 info@xecurify.com