저는 Laravel 5.4가 기존의 데이터베이스 방식 대신 LDAP를 사용하여 사용자를 인증하도록하려고합니다.관리자 연결없이 LDAP를 사용하여 Laravel에서 인증/로그인 하시겠습니까?
이미 라이브러리가 있습니다. Adldap2/Adldap2-Laravel. 문제는이 라이브러리이다 :
- 는
- 다음 암호가 올바른지 내 애플 리케이션에
- 수표를 기록하고자하는 사용자를 검색 관리자 사용자로 먼저 LDAP 서버를 연결
- 저장
- 이하지 않는 관리 사용자
로 LDAP에 다시 연결 "로컬"Laravel 데이터베이스에서 해당 사용자에 관련된 데이터 내 경우에는 LDAP 서버에 관리자가 없어서 연결해야합니다. 역할이없는 사용자 만 앱을 사용할 수 있습니다. already existing issue에서 보는 바와 같이
, 나는 (: Online LDAP Test Server 나는이 웹 페이지에서 제공하는 서버에 연결을 시도하고 테스트 목적)이 때라도 코드로 LoginController
클래스를 수정했습니다.
protected function attemptLogin(Request $request) {
$conn_settings = config('adldap.connections')[config('adldap_auth.connection')]['connection_settings'];
$credentials = $request->only(config('adldap_auth.usernames.eloquent'), 'password');
$user_format = env('ADLDAP_USER_FORMAT', 'uid=%s,' . $conn_settings['base_dn']);
$userdn = sprintf($user_format, $credentials[config('adldap_auth.usernames.eloquent')]);
$pass = $credentials['password'];
if(Adldap::auth()->attempt($userdn, $pass, $bindAsUser = true)) {
return true;
}
return false;
}
내가 지금 가지고있는 문제는 올바른 자격 증명으로 로그인하면 로그인 양식으로 다시 전송된다는 것입니다. 자격 증명이 잘못되면 해당 오류 메시지가 표시됩니다. 다만 경우에
내 구성 파일 :
.env의 :
ADLDAP_CONTROLLERS=ldap.forumsys.com
ADLDAP_BASEDN=dc=example,dc=com
ADLDAP_USER_FORMAT=uid=%s,dc=example,dc=com
adldap_auth.php :
[
'connection' => env('ADLDAP_CONNECTION', 'default'),
'provider' => Adldap\Laravel\Auth\DatabaseUserProvider::class,
'resolver' => Adldap\Laravel\Auth\Resolver::class,
'importer' => Adldap\Laravel\Auth\Importer::class,
'rules' => [
Adldap\Laravel\Validation\Rules\DenyTrashed::class,
// Adldap\Laravel\Validation\Rules\OnlyImported::class,
],
'scopes' => [
Adldap\Laravel\Scopes\UpnScope::class,
],
'usernames' => [
'ldap' => 'uid',
'eloquent' => 'username',
],
'login_fallback' => env('ADLDAP_LOGIN_FALLBACK', false),
'password_sync' => env('ADLDAP_PASSWORD_SYNC', true),
'windows_auth_attribute' => ['samaccountname' => 'AUTH_USER'],
'sync_attributes' => [
'username' => 'uid',
'name' => 'cn',
],
];
adldap.php : 경우
return [
'connections' => [
'default' => [
'auto_connect' => false,
'connection' => Adldap\Connections\Ldap::class,
'schema' => Adldap\Schemas\ActiveDirectory::class,
'connection_settings' => [
'account_prefix' => env('ADLDAP_ACCOUNT_PREFIX', ''),
'account_suffix' => env('ADLDAP_ACCOUNT_SUFFIX', ''),
'domain_controllers' => explode(' ', env('ADLDAP_CONTROLLERS', 'corp-dc1.corp.acme.org corp-dc2.corp.acme.org')),
'port' => env('ADLDAP_PORT', 389),
'timeout' => env('ADLDAP_TIMEOUT', 5),
'base_dn' => env('ADLDAP_BASEDN', 'dc=corp,dc=acme,dc=org'),
'admin_account_suffix' => env('ADLDAP_ADMIN_ACCOUNT_SUFFIX', ''),
'admin_username' => env('ADLDAP_ADMIN_USERNAME', ''),
'admin_password' => env('ADLDAP_ADMIN_PASSWORD', ''),
'follow_referrals' => true,
'use_ssl' => false,
'use_tls' => false,
],
],
],
]