KerberosでAD/LDAPコネクターの認証を構成する
AD/LDAPコネクターを介してActive Directoryとフェデレーションを行うことができます。AD/LDAPコネクターを使用すると、ユーザーは企業ネットワーク内のドメイン参加マシンで認証を行うことができます。
Active Directoryを設定
[Auth0 Dashboard]>[Authentication(認証)]>[Enterprise(エンタープライズ)]>[Active Directory(AD)/LDAP]に移動して、構成したい接続を選択します。
[Use Windows Integrated Auth (Kerberos)(Windows統合認証(Kerberos)を使用する)]スイッチを有効にします。
Kerberosの自動検出範囲
Kerberos認証が有効な場合、ADコネクターが稼働しているサーバーのIPアドレスは、ネットワークIPアドレス範囲に明示的に追加されます。つまり、ユーザーの要求がADコネクターのものと同じIPアドレスから送られてきた場合は、Kerberos認証が試行されます。
IP範囲を構成します。CIDR表記を使用します。範囲はAuth0で表示される範囲で指定します。Auth0がクラウドで稼働している場合は、ユーザーの内部IPアドレスを表示することはできません。その場合は、会社のパブリック向け/WAN IPアドレスを構成することになります。
この設定が変更されるたびに、ADコネクターをホストするWindows Serviceを再起動することを推奨します。再起動することで、変更がただちに有効になります。
認証フロー
ユーザーの場所に応じて、認証フローはIP範囲が設定されるときと異なります。Fabrikamを例として見てみましょう。これは、SaaSバージョンのAuth0を使用するため、接続にパブリックIPアドレス(24.12.34.56/32
)を構成しました。建物内から接続しているすべてのユーザーの発信元は、(接続で構成されているように)24.12.34.56
です。認証する場合、ユーザーはAD/LDAPのネイティブフローに従い、シームレスなSSOエクスペリエンスを実現することができます。
これが機能するには、ネットワークでユーザーがconfig.json
コネクターの高可用性デプロイメントでは、ユーザーの接続先アドレスはすべてのコネクターインスタンスの前にあるネットワークロードバランサーです。

詳細については、「高可用性環境のAD/LDAPコネクターをデプロイする
一方、ユーザーが企業ネットワークを使用していない(顧客先にいる、VPNを使わないリモートワークなど)場合は、AD/LDAPコネクターに直接アクセスすることはできません。ユーザーはユーザー名/パスワードを入力する必要があり、Auth0はAD/LDAPコネクターを使ってこれらの資格情報を検証します(今度は、Active Directoryを使用してこれらの資格情報を検証します)。

Lockによる自動ログイン
アプリケーションがAuth0でホストされるログインページ内でLock 10または11を使用している(通常、SAML/WS-Fedプロトコルとシングルサインオン(SSO)統合に使用される)場合、「Windows認証」を使用してユーザーが認証することができるボタンが表示されます。
(エンドユーザーのIPアドレスに基づいて)Kerberosを使用できる場合は、ユーザーの自動サインインが必要になることもあります。Kerberosを使用できる場合にユーザーを自動的にサインインするために、以下の変更をAuth0のログインページに追加することができます。
<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, {
//...additional configuration
});
function handleError(err) {
// add proper error handling
console.log(err);
};
var params = Object.assign({
scope: config.internalOptions.scope,
_csrf: config.internalOptions._csrf,
state: config.internalOptions.state,
},
{
/* additional configuration needed for use of custom domains
overrides: {
__tenant: config.auth0Tenant,
__token_issuer: '{yourCustomDomain}'
}, */
domain: config.auth0Domain,
clientID: config.clientID,
redirectUri: config.callbackURL,
responseType: 'code'
});
var webAuth = new auth0.WebAuth(params);
/*
* Verify if Kerberos is possible, if it is, try to authenticate the user.
*
* the response from getSSOData will only have a connection and strategy if
* the IP address is within the Kerberos range in the connection's settings
*/
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>
Was this helpful?
ランタイム時にKerberosをバイパスする
ユーザーが接続の設定で構成された範囲内のIPアドレスからログインしていても、rememberLastLogin: false
をlock.show()
に渡すことで、Kerberosを使用しないようにすることができます。
function useKerberos() {
// return true to use Kerberos, false to bypass
};
lock.show({rememberLastLogin: useKerberos()});
Was this helpful?
Kerberos要求ログを有効にする
Kerberos要求の冗長ロギングを有効にするには、システムレベルの環境変数
DEBUG=kerberos-server
を追加します。コネクターを再起動します。
再度ログインし、詳細をログで確認します。
Kerberosに対するFirefoxのサポート
デフォルトで、FirefoxはユーザーをKerberosで認証するのに必要なすべての「ネゴシエーション」要求を拒否します。KerberosでFirefoxを使用したい場合は、コネクターがインストールされているサーバーで許可リストを使用する必要があります。
[Firefox]タブを開き、アドレスバーに
about:config
と入力します。警告メッセージを消し、検索ボックスに
negotiate
と入力します。network.negotiate-auth.trusted-uris
項目を検索し、ダブルクリックして値を変更します。コネクターがインストールされているサーバーのドメイン名を入力します。ロードバランサーの背後に複数のコネクターのインスタンスがある場合は、バランサーのDNS名を追加します。値はURLの接頭辞またはドメインのカンマ区切りのリストを、
mydomain.com, https://myotherdomain.com
の形式で受け入れます。[OK]をクリックします。変更を有効にするのに、サーバーを再起動する必要はありません。
Kerberosに対するHTTPSのサポート
Kerberos認証はHTTP(HTTPSでなく)で行うことができます。Microsoft Office 365やその他の最新製品は、HTTPに対応していないことがあります。
この制限を解決するには、次のようにします。
リバースプロキシを設定し、HTTPSドメインにAD/LDAPコネクターを公開します。
SERVER_URL
(フロントエンドのURL)パラメーターを使用し、AD/LDAPコネクターが受信要求をリッスンする公共の場所を公開することができます。リバースプロキシの
SERVER_URL
をデプロイされたコネクターのすべての内部インスタンスにマッピングします。