All Projects → yiisoft → auth

yiisoft / auth

Licence: BSD-3-Clause license
www.yiiframework.com/

Programming Languages

PHP
23972 projects - #3 most used programming language

Projects that are alternatives of or similar to auth

yii-auth-client
Yii Framework external authentication via OAuth and OpenID Extension
Stars: ✭ 20 (-28.57%)
Mutual labels:  auth, yii3
auth-ajax
Auth token handling for Polymer
Stars: ✭ 15 (-46.43%)
Mutual labels:  auth, bearer
auth-jwt
www.yiiframework.com/
Stars: ✭ 28 (+0%)
Mutual labels:  auth, yii3
aws-mobilehub-helper-ios
ARCHIVED: Use https://github.com/aws/aws-sdk-ios/
Stars: ✭ 41 (+46.43%)
Mutual labels:  auth
ertis-auth
Generic token generator and validator service like auth
Stars: ✭ 28 (+0%)
Mutual labels:  auth
blueauth
🔐 Serverless passwordless authentication. No databases needed. Use in just 1 line in serverless, middleware, express, next.js, and more.
Stars: ✭ 56 (+100%)
Mutual labels:  auth
HerokuContainer
Dockerized ASP.NET Core Web API app in Heroku
Stars: ✭ 26 (-7.14%)
Mutual labels:  auth
supabase-ui-svelte
Supabase authentication UI for Svelte
Stars: ✭ 83 (+196.43%)
Mutual labels:  auth
laravel-nuxt
Laravel 5.6 + Nuxt 1.4: Auth Starter (SSR, SPA, Socialite)
Stars: ✭ 19 (-32.14%)
Mutual labels:  auth
yii-dev-tool
Development environment for Yii 3 packages
Stars: ✭ 56 (+100%)
Mutual labels:  yii3
hapi-auth-bearer-simple
Hapi authentication plugin for bearer token validation
Stars: ✭ 16 (-42.86%)
Mutual labels:  bearer
http
Handy HTTP utility such as method constants and status codes
Stars: ✭ 20 (-28.57%)
Mutual labels:  yii3
horse-basic-auth
Middleware for Basic Authentication in HORSE
Stars: ✭ 37 (+32.14%)
Mutual labels:  auth
casbin-ex
An authorization library that supports access control models like ACL, RBAC, ABAC in Elixir
Stars: ✭ 37 (+32.14%)
Mutual labels:  auth
codeigniter4-authentication
The codeigniter4\authentication component provides an API for authentication and includes concrete authentication adapters for common use case scenarios.
Stars: ✭ 34 (+21.43%)
Mutual labels:  auth
Database-Web-API
Dynamically generate RESTful APIs from the contents of a database table. Provides JSON, XML, and HTML. Supports most popular databases
Stars: ✭ 37 (+32.14%)
Mutual labels:  auth
assets
Assets management
Stars: ✭ 17 (-39.29%)
Mutual labels:  yii3
view
Yii view rendering library
Stars: ✭ 42 (+50%)
Mutual labels:  yii3
permissionbolt
🔩 Middleware for keeping track of users, login states and permissions
Stars: ✭ 81 (+189.29%)
Mutual labels:  auth
MyTelegramOrgRoBot
telegram.dog/usetgxbot
Stars: ✭ 94 (+235.71%)
Mutual labels:  auth

Yii Auth


Latest Stable Version Total Downloads Build status Scrutinizer Code Quality Code Coverage Mutation testing badge static analysis type-coverage

The package provides various authentication methods, a set of abstractions to implement in your application, and a PSR-15 middleware to authenticate an identity.

Installation

composer require yiisoft/auth

General usage

Configure a middleware and add it to your middleware stack:

$identityRepository = getIdentityWithTokenRepository(); // \Yiisoft\Auth\IdentityRepositoryInterface
$authenticationMethod = new \Yiisoft\Auth\Method\HttpBasic($identityRepository);

$middleware = new \Yiisoft\Auth\Middleware\Authentication(
    $authenticationMethod,
    $responseFactory, // PSR-17 ResponseFactoryInterface
    $failureHandler // optional, \Yiisoft\Auth\Handler\AuthenticationFailureHandler by default
);

$middlewareDispatcher->addMiddleware($middleware);

In order to get an identity instance in the following middleware use getAttribute() method of the request instance:

public function actionIndex(\Psr\Http\Message\ServerRequestInterface $request): \Psr\Http\Message\ResponseInterface
{
    $identity = $request->getAttribute(\Yiisoft\Auth\Middleware\Authentication::class);
    // ...
}

HTTP basic authentication

Basic HTTP authentication is typically used for entering login and password in the browser. Credentials are passed as $_SERVER['PHP_AUTH_USER'] and $_SERVER['PHP_AUTH_PW'].

$authenticationMethod = (new \Yiisoft\Auth\Method\HttpBasic($identityRepository))
    ->withRealm('Admin')
    ->withAuthenticationCallback(static function (
        ?string $username,
        ?string $password,
        \Yiisoft\Auth\IdentityWithTokenRepositoryInterface $identityRepository
    ): ?\Yiisoft\Auth\IdentityInterface {
        return $identityRepository->findIdentityByToken($username, \Yiisoft\Auth\Method\HttpBasic::class);
    });

Realm is typically what you will see in the browser prompt asking for a login and a password. Custom authentication callback set in the above is the same as default behavior when it is not specified.

HTTP bearer authentication

Bearer HTTP authentication is typically used in APIs. Authentication token is passed in WWW-Authenticate header.

$authenticationMethod = new \Yiisoft\Auth\Method\HttpBearer($identityRepository);

Custom HTTP header authentication

Custom HTTP header could be used if you do not want to leverage bearer token authentication:

 $authenticationMethod = (new \Yiisoft\Auth\Method\HttpHeader($identityRepository))
     ->withHeaderName('X-Api-Key')
     ->withPattern('/(.*)/'); // default

In the above we use full value of X-Api-Key header as token.

Query parameter authentication

This authentication method is mainly used by clients unable to send headers. In case you do not have such clients we advise not to use it.

$authenticationMethod = (new \Yiisoft\Auth\Method\QueryParameter($identityRepository))
    ->withParameterName('token');

Using multiple authentication methods

To use multiple authentication methods, use Yiisoft\Auth\Method\Composite:

$authenticationMethod = new \Yiisoft\Auth\Method\Composite([
    $bearerAuthenticationMethod,
    $basicAuthenticationMethod
]);

Extension and integration points

  • \Yiisoft\Auth\IdentityInterface should be implemented by your application identity class. Typically, that is User.
  • \Yiisoft\Auth\IdentityRepositoryInterface should be implemented by your application identity repository class. Typically, that is UserIdentity.
  • \Yiisoft\Auth\IdentityWithTokenRepositoryInterface could be additionally implemented by your application identity repository class in case token-based authentication is needed. Typically, that is UserIdentity.
  • \Yiisoft\Auth\AuthenticationMethodInterface could be implemented to provide your own authentication method.

Unit testing

The package is tested with PHPUnit. To run tests:

./vendor/bin/phpunit

Mutation testing

The package tests are checked with Infection mutation framework. To run it:

./vendor/bin/infection

Static analysis

The code is statically analyzed with Psalm. To run static analysis:

./vendor/bin/psalm

Support the project

Open Collective

Follow updates

Official website Twitter Telegram Facebook Slack

License

The Yii Auth is free software. It is released under the terms of the BSD License. Please see LICENSE for more information.

Maintained by Yii Software.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].