Classic Login を使用している場合は、AD/LDAP Connector を介して Active Directory とフェデレーションできます。AD/LDAP Connector を使用すると、社内ネットワーク内のドメイン参加済みマシン上にいるユーザーが認証できるようになります。
Auth0 Dashboard > Authentication > Enterprise > Active Directory/LDAP に移動し、設定する接続を選択します。
Use Windows Integrated Auth (Kerberos) のスイッチを有効にします。
Kerberos 認証が有効になっている場合、AD Connector が実行されているサーバーの外部公開 IP アドレスは、ネットワークの IP 範囲に自動的に追加されます。つまり、ユーザーのリクエストの送信元が AD Connector と同じ外部公開 IP アドレスである場合、Kerberos 認証が試行されます。
IP Ranges を設定します。CIDR 表記 を使用してください。ここで指定するのは、Auth0 から見える IP 範囲である必要があります。Auth0 がクラウド上で動作している場合、ユーザーの内部 IP アドレスは確認できません。その場合は、会社の公開側/WAN IP アドレスを設定します。
この設定を変更するたびに、AD Connector をホストしている Windows Service を再起動することをお勧めします。こうすることで、変更がすぐに反映されます。
IP 範囲が設定されている場合、認証フローはユーザーのいる場所によって異なります。Fabrikam を例にすると、Auth0 の SaaS 版を使用しているため、接続で Public IP Address (24.12.34.56/32) を設定しています。社内から接続するユーザーは、全員 24.12.34.56 (接続で設定されたもの) からアクセスします。認証時には、ユーザーは AD/LDAP のネイティブフローを利用でき、シームレスな SSO を実現できます。
これを機能させるには、ネットワークで、ユーザーが config.json ファイルで設定されたポートを介して AD/LDAP Connector に接続できる必要があります。Connector を高可用性構成でデプロイしている場合、ユーザーが接続する先のアドレスは、すべての Connector インスタンスの前段にあるネットワークロードバランサーです。
詳細については、高可用性環境向けに AD/LDAP Connector をデプロイする を参照してください。
一方、ユーザーが社内ネットワーク外にいる場合 (たとえば、顧客先にいる場合や、VPN なしで在宅勤務している場合) 、AD/LDAP Connector に直接アクセスすることはできません。その場合、ユーザーは username/password を入力する必要があり、Auth0 がその認証情報を AD/LDAP Connector で検証します (さらに AD/LDAP Connector が Active Directory を使用してその認証情報を検証します) 。
AD/LDAP 接続で IP 範囲を検出し、その範囲を Lock と組み合わせて統合 Windows 認証を有効にする機能は、Lock 10 では動作しますが、Lock 11 では Universal Login のシナリオでのみ使用できます。Lock 11 を Embedded Login のシナリオで使用する場合、この機能は無効になります。
アプリケーションが Auth0 でホストされる Login Page 内で Lock 10 または 11 を使用している場合 (通常は SAML /WS-Federation プロトコルおよびシングルサインオン (SSO) 統合で使用されます) 、ユーザーが “Windows Authentication” を使用して認証できるボタンが表示されます。
場合によっては、Kerberos を利用できる場合 (エンドユーザーの IP アドレスに基づく) に、ユーザーを自動的にサインインさせたいことがあります。Kerberos を利用できる場合にユーザーを自動的にサインインさせるには、次の変更を Auth0 Login Page に追加します。
< script src = "https://cdn.auth0.com/js/lock/11.x.x/lock.min.js" ></ script >
< script src = "https://cdn.auth0.com/js/auth0/9.x/auth0.min.js" ></ script >
< script src = "https://cdn.auth0.com/js/polyfills/1.0/object-assign.min.js" ></ script >
< script >
var config = JSON . parse ( decodeURIComponent ( escape ( window . atob ( '@@config@@' ))));
var lock = new Auth0Lock ( config . clientID , config . auth0Domain , {
//...追加設定
});
function handleError ( err ) {
// 適切なエラー処理を追加する
console . log ( err );
};
var params = Object . assign ({
scope: config . internalOptions . scope ,
_csrf: config . internalOptions . _csrf ,
state: config . internalOptions . state ,
},
{
/* カスタムドメイン使用時に必要な追加設定
overrides: {
__tenant: config.auth0Tenant,
__token_issuer: '{yourCustomDomain}'
}, */
domain: config . auth0Domain ,
clientID: config . clientID ,
redirectUri: config . callbackURL ,
responseType: 'code'
});
var webAuth = new auth0 . WebAuth ( params );
/*
* Kerberos が使用可能かどうかを確認し、可能であればユーザーの認証を試みる。
*
* getSSOData のレスポンスに接続とストラテジーが含まれるのは、
* IP アドレスが接続設定の Kerberos 範囲内にある場合のみ
*/
webAuth . client . getSSOData ( true , function ( err , data ) {
if ( err ) handleError ( err );
if ( data . connection && data . strategy === 'ad' ) {
webAuth . authorize ({ connection: data . connection }, function ( err ) {
if ( err ) handleError ( err );
});
} else {
lock . show ();
}
});
</ script >
See all 53 lines
lock.show() に rememberLastLogin: false を渡すと、ユーザーが接続の設定で構成された IP アドレス範囲内からログインしている場合でも、Kerberos が使用されないようにできます。
function useKerberos () {
// Kerberosを使用する場合はtrueを、バイパスする場合はfalseを返す
};
lock . show ({ rememberLastLogin: useKerberos ()});
Kerberos リクエストのログ記録を有効にする
Kerberos リクエストの詳細ログを有効にするには、システムレベルの環境変数 DEBUG=kerberos-server を追加します。
Connector を再起動します。
再度ログインし、ログを確認して詳細情報を確認します。
デフォルトでは、Firefox は Kerberos でユーザーを認証するために必要な “negotiate” リクエストをすべて拒否します 。Firefox で Kerberos を使用する場合は、Connector がインストールされているサーバーを許可リストに追加する必要があります。
Firefox のタブを開き、アドレスバーに about:config と入力します。
警告メッセージが表示されたら閉じ、検索ボックスに negotiate と入力します。
network.negotiate-auth.trusted-uris 項目を見つけて、ダブルクリックし、その値を変更します。
Connector がインストールされているサーバーのドメイン名を入力します。ロードバランサーの背後に Connector のインスタンスが複数ある場合は、ロードバランサーの DNS 名を追加します。
値には、mydomain.com, https://myotherdomain.com の形式で、URL プレフィックスまたはドメインをカンマ区切りのリストで指定できます。
OK をクリックします。変更を有効にするためにサーバーを再起動する必要はありません。
Kerberos 認証は HTTP 上で動作し、HTTPS には対応していません。Microsoft Office 365 などの最新の製品では、HTTP では動作しない場合があります。
この制限を解消するには:
リバースプロキシを設定し、AD/LDAP Connector を HTTPS ドメインで公開します。SERVER_URL (Front Facing URL) パラメーターを使用すると、AD/LDAP Connector が受信リクエストを待ち受ける公開 URL を指定できます。
リバースプロキシで SERVER_URL を、デプロイ済み Connector のすべての内部インスタンスにマッピングします。