識別子は、オーセンティケーターによる要求から抽出された情報に基づいて、ユーザーまたはサービスを識別します。識別子は、loadIdentifier
メソッドのオプションを取ることができます。
パスワード識別子を使用する全体的な例は次のようになります:
Identifiers will identify an user or service based on the information
that was extracted from the request by the authenticators. Identifiers
can take options in the loadIdentifier
method. A holistic example of
using the Password Identifier looks like:
$service->loadIdentifier('Authentication.Password', [
'fields' => [
'username' => 'email',
'password' => 'passwd',
],
'resolver' => [
'className' => 'Authentication.Orm',
'finder' => 'active'
],
'passwordHasher' => [
'className' => 'Authentication.Fallback',
'hashers' => [
'Authentication.Default',
[
'className' => 'Authentication.Legacy',
'hashType' => 'md5'
],
]
]
]);
パスワード識別子は、渡された資格情報をデータソースと照合します。
The password identifier checks the passed credentials against a datasource.
構成オプション:
Configuration options:
['username' => 'username', 'password' => 'password']
です。username
を配列に設定することもできます。例えば ['username' => ['username', 'email'], 'password' => 'password']
を使用すると、ユーザー名またはメールの列の値を一致させることができます。
Authentication.Orm
です。
DefaultPasswordHasher::class
です。
- fields: The fields for the lookup. Default is
['username' => 'username', 'password' => 'password']
. You can also set theusername
to an array. For e.g. using['username' => ['username', 'email'], 'password' => 'password']
will allow you to match value of either username or email columns.- resolver: The identity resolver. Default is
Authentication.Orm
which uses CakePHP ORM.- passwordHasher: Password hasher. Default is
DefaultPasswordHasher::class
.
渡されたトークンをデータソースと照合します。
Checks the passed token against a datasource.
構成オプション:
Configuration options:
token
です。
token
です。
Authentication.Orm
です。
- tokenField: The field in the database to check against. Default is
token
.- dataField: The field in the passed data from the authenticator. Default is
token
.- resolver: The identity resolver. Default is
Authentication.Orm
which uses CakePHP ORM.
渡されたJWTトークンをデータソースと照合します。
Checks the passed JWT token against a datasource.
id
です。
sub
です。
Authentication.Orm
です。
- tokenField: The field in the database to check against. Default is
id
.- dataField: The payload key to get user identifier from. Default is
sub
.- resolver: The identity resolver. Default is
Authentication.Orm
which uses CakePHP ORM.
渡された資格情報をLDAPサーバーと照合します。この識別子には、PHP LDAP拡張機能が必要です。
Checks the passed credentials against a LDAP server. This identifier requires the PHP LDAP extension.
['username' => 'username', 'password' => 'password']
です。
389
です。
\Authentication\Identifier\Ldap\ExtensionAdapter
です。it implements the AdapterInterface
を実装している場合、カスタムオブジェクト/クラス名をここに渡すことができます。
LDAP_OPT_PROTOCOL_VERSION
やLDAP_OPT_NETWORK_TIMEOUT
などの追加のLDAPオプション。
より有効なオプションについては、php.netを参照してください。
- fields: The fields for the lookup. Default is
['username' => 'username', 'password' => 'password']
.- host: The FQDN of your LDAP server.
- port: The port of your LDAP server. Defaults to
389
.- bindDN: The Distinguished Name of the user to authenticate. Must be a callable. Anonymous binds are not supported.
- ldap: The extension adapter. Defaults to
\Authentication\Identifier\Ldap\ExtensionAdapter
. You can pass a custom object/classname here if it implements theAdapterInterface
.- options: Additional LDAP options, like
LDAP_OPT_PROTOCOL_VERSION
orLDAP_OPT_NETWORK_TIMEOUT
. See php.net for more valid options.
識別のためにコールバックを使用できます。これは、単純な識別子やクイックプロトタイピングに役立ちます。
Allows you to use a callback for identification. This is useful for simple identifiers or quick prototyping.
構成オプション:
Configuration options:
null
であり、例外が発生します。オーセンティケーターを使用するには、このオプションに有効なコールバックを渡す必要があります。
- callback: Default is
null
and will cause an exception. You’re required to pass a valid callback to this option to use the authenticator.
コールバック識別子は、単純な結果の場合はnull|ArrayAccess
を返し、エラーメッセージを転送する場合は、Authentication\Authenticator\Result
を返します:
Callback identifiers can either returnnull|ArrayAccess
for simple results, or anAuthentication\Authenticator\Result
if you want to forward error messages:
// A simple callback identifier
$authenticationService->loadIdentifier('Authentication.Identifier', [
'callback' => function($data) {
// do identifier logic
// Return an array of the identified user or null for failure.
if ($result) {
return $result;
}
return null;
}
]);
// Using a result object to return error messages.
$authenticationService->loadIdentifier('Authentication.Identifier', [
'callback' => function($data) {
// do identifier logic
if ($result) {
return new Result($result, Result::SUCCESS);
}
return new Result(
null,
Result::FAILURE_OTHER,
['message' => 'Removed user.']
);
}
]);
IDリゾルバーは、さまざまなデータソース用のアダプターを提供します。検索するソースIDを制御できます。それらは識別子から分離されているため、識別子メソッド(フォーム、jwt、基本認証)から独立して交換できます。
Identity resolvers provide adapters for different datasources. They allow you to control which source identities are searched in. They are separate from the identifiers so that they can be swapped out independently from the identifier method (form, jwt, basic auth).
CakePHP ORMのIDリゾルバー。
Identity resolver for the CakePHP ORM.
構成オプション:
Configuration options:
Users
です。
all
です。
- userModel: The user model identities are located in. Default is
Users
.- finder: The finder to use with the model. Default is
all
.
ORMリゾルバーを使用するには、composer.json
ファイルにcakephp/orm
が必要です。
In order to use ORM resolver you must requirecakephp/orm
in yourcomposer.json
file.
ORMまたはデータソースは、リゾルバーを作成することにより、認証で動作するように適合させることができます。リゾルバーはAuthentication\Identifier\Resolver\ResolverInterface
を実装する必要があり、App\Identifier\Resolver
名前空間の下に存在する必要があります。
Any ORM or datasource can be adapted to work with authentication by creating a resolver. Resolvers must implementAuthentication\Identifier\Resolver\ResolverInterface
and should reside underApp\Identifier\Resolver
namespace.
リゾルバーはリゾルバー
構成オプションを使用して構成できます:
Resolver can be configured using resolver
config option:
$service->loadIdentifier('Authentication.Password', [
'resolver' => [
// can be a full class name: \Some\Other\Custom\Resolver::class
'className' => 'MyResolver',
// Pass additional options to the resolver constructor.
'option' => 'value'
]
]);
またはセッターを使用して注入されます:
Or injected using a setter:
$resolver = new \App\Identifier\Resolver\CustomResolver();
$identifier = $service->loadIdentifier('Authentication.Password');
$identifier->setResolver($resolver);