PDO

概观

PDO存储类使用 PHP 的PDO扩展。这允许连接到MySQL,SQLite,PostgreSQL 等等

安装

PDO是默认安装的php 5.1+,这个库已经是必需的了,所以你会很好的去。

开始使用

一旦完成,实例化一个PDO客户端 连接到您选择的数据库服务器。

// connection for MySQL
$pdo = new PDO('mysql:host=localhost;dbname=test', $user, $pass); // connection for SQLite
$pdo = new PDO('sqlite:/opt/databases/mydb.sq3'); // connection for SQLite in memory
$pdo = new PDO('sqlite::memory:');

然后,使用Pdo存储类创建存储对象:

$storage = new OAuth2\Storage\Pdo($pdo);

// now you can perform storage functions, such as the one below
$storage->setClientDetails($client_id, $client_secret, $redirect_uri);

用法

PDO存储引擎实现了该库中支持的所有标准存储接口。请参阅接口了解更多信息。

蒙戈

概观

使用Mongo文档数据库在OAuth中存储和检索对象。

安装

首先,安装Mongo Extension for PHP您可以使用PECL:

文本
$ sudo pecl install mongo

或者手动安装。 从github 下载最新版本的代码。

文本
$ tar zxvf mongodb-mongodb-php-driver-<commit_id>.tar.gz
$ cd mongodb-mongodb-php-driver-<commit_id>
$ phpize
$ ./configure
$ make all
$ sudo make install

接下来,mongo.so在您的php.ini文件中启用扩展名:

文本
extension=mongo.so

开始使用

一旦完成,创建一个mongo客户端 连接到mongo服务器。

$mongo = new \MongoClient();

现在,使用Mongo存储类创建存储对象:

$storage = new OAuth2\Storage\Mongo($mongo);

// now you can perform storage functions, such as the one below
$storage->setClientDetails($client_id, $client_secret, $redirect_uri);

用法

Mongo存储引擎实现了该库中支持的所有标准存储接口。请参阅接口了解更多信息。

Redis的

概观

使用Redis键值存储系统在OAuth中存储和检索对象。

安装

首先,安装PHP 的Redis客户端库

文本
$ composer require predis/predis:dev-master

开始使用

一旦完成,创建一个连接实例 来连接到redis服务器。

$predis = new \Predis\Client();

然后,使用Redis存储类创建存储对象:

$storage = new OAuth2\Storage\Redis($predis);

// now you can perform storage functions, such as the one below
$storage->setClientDetails($client_id, $client_secret, $redirect_uri);

用法

Redis存储引擎实现了该库中支持的所有标准存储接口。请参阅接口了解更多信息。

卡桑德拉

概观

使用Cassandra数据库管理系统在OAuth中存储和检索对象。

安装

首先,为PHP 安装Cassandra客户端库

文本
$ composer require thobbs/phpcassa:dev-master

开始使用

一旦完成,实例化连接池 实例以连接到cassandra服务器。

$servers = array('127.0.0.1:9160');
$cassandra = new \phpcassa\Connection\ConnectionPool('oauth2_server', $servers);

然后,使用Cassandra存储类创建存储对象:

$storage = new OAuth2\Storage\Cassandra($cassandra);

// now you can perform storage functions, such as the one below
$storage->setClientDetails($client_id, $client_secret, $redirect_uri);

用法

Cassandra存储引擎实现了该库中支持的所有标准存储接口。请参阅接口了解更多信息。

DynamoDB

概观

使用DynamoDB NoSQL数据库服务在OAuth中存储和检索对象。

安装

首先,您需要安装Amazon Web Services PHP SDK

文本
$ composer require aws/aws-sdk-php:dev-master

开始使用

如果您尚未创建~/.aws/credentials文件,则这是启动DynamoDB并运行的最简单方法。

// @see http://docs.aws.amazon.com/aws-sdk-php/guide/latest/credentials.html#credential-profiles
$config = array(
'profile' => 'default',
'region' => Aws\Common\Enum\Region::US_EAST_1, // Your region may differ
);

或者,您可以将您的客户端配置为直接使用您的凭据运行

// These credentials are found in your AWS management console
$config = array(
'key' => 'my-aws-key',
'secret' => 'my-aws-secret',
'region' => Aws\Common\Enum\Region::US_EAST_1, // Your region may differ
);

接下来,通过创建您的配置数组并使用以下factory方法来实例化AWS客户端:

$dynamo = Aws\DynamoDb\DynamoDbClient::factory($config);

最后,使用DynamoDB存储类创建存储对象:

$storage = new OAuth2\Storage\DynamoDB($dynamo);

// now you can perform storage functions, such as the one below
$storage->setClientDetails($client_id, $client_secret, $redirect_uri);

要查看默认表结构的示例,请查看Bootstrap::createDynamoDB此库中的函数,或者使用DynamoDB的管理UI自行创建表。

用法

DynamoDB存储引擎实现了此库中支持的所有标准存储接口。请参阅接口了解更多信息。

自定义存储

概观

使用这个库的一个很大的好处是可以自定义你自己的存储。如果其中一个内置存储对象不符合您的需求,则可以实现下面的一个或多个接口以获取自定义存储功能。

如何自定义存储

首先,找出你想要实现的存储接口。至少,每一个的OAuth2服务器需要存储对象实施AccessTokenInterfaceClientCredentialsInterface,因此,如果您不能存储在内置存储类的这些使用,您的自定义存储可以用这些启动。之后,您将需要根据您的授予类型实施其他接口。例如,如果您希望服务器支持authorization_code授予类型(最常见),并且希望自定义存储执行该操作,则还需要AuthorizationCodeInterface在存储对象上实现 。

术语“实现”是指您的自定义存储PHP类中的类声明。例如,要为访问令牌,客户端和授权代码授权类型使用自定义存储,您的类将如下所示:

class MyCustomStorage implements OAuth2\Storage\AccessTokenInterface,
OAuth2\Storage\ClientCredentialsInterface, OAuth2\Storage\AuthorizationCodeInterface
{
// method implementation here...
}

一旦完成,您将需要编写这些接口所需的所有方法。例如,ClientCredentialsInterface指定getClientDetails接受$client_id参数并返回客户端数据数组的方法。

从那里,你将传递这个新的存储对象到服务器类:

$customStorage = new MyCustomStorage();
$server = new OAuth2\Server($customStorage);

不知道你需要什么方法?没问题,只需弹出打开界面类,并看看!如果这不是你的风格,PHP会抛出一个有用的错误消息,让你知道你的类仍然需要实现的方法,如果它丢失了。

包含在该库中的所有存储对象与“自定义存储”对象没有区别。唯一真正的区别是它们默认包含在库中,并且它们实现了所有的接口(你不需要实现所有的存储接口,只是你想要定制的接口)。

有关所有可能的存储接口,请参阅下面的接口列表,并查看 Cassandra存储 类,以获得为实现“定制”目的而实现的存储对象的示例 - 与Cassandra存储引擎进行接口。

接口

访问令牌接口

为了实现基本的访问令牌。这是令牌控制器所必需的 ,除非使用 JWT访问令牌

ID:“access_token”

客户端界面

令牌控制器 和授权控制器是必需的,用于收集有关发出请求的客户端的信息。

ID:“客户端”

客户端凭证界面

验证客户的凭证。这对于令牌控制器的所有请求都是必需的,以便验证发出请求的客户端。

ID:“client_credentials”

授权码接口

用于实施授权码授权类型

id:“authorization_code”

刷新令牌接口

用于实现刷新令牌授予类型

id:“refresh_token”

用户凭证界面

用于实现用户凭证授予类型

id:“user_credentials”

智威汤逊承载接口

JWT承载授权类型必需。

id:“jwt_bearer”

范围界面

使用Scope Util来实现作用域。

ID:“范围”

公钥接口

用于实施JWT访问令牌

id:“public_key”

智威汤逊接入令牌接口

使用JWT访问令牌的界面。这需要公用密钥接口(见下),并用于验证访问令牌而不使用数据库系统。

ID:无

使用多个存储

几乎所有类型的存储都可以使用该库附带的每个存储对象。但是,您可能想要针对不同的事物使用不同类型的商店。例如,如果你想存储你的客户MySQL,你的访问令牌MongoDB和你的范围Memory

文本
  clients       --->   ||MySQL Database||

  access tokens --->   {{   MongoDB    }}

  scopes        --->   ((   Memory     ))

这不是问题!您只需在创建OAuth2服务器对象时单独指定每个存储。首先创建你的存储对象:

// instantiate all your storage objects
$clientStorage = new OAuth2\Storage\PDO(array(
'dsn' => 'mysql:host=localhost;dbname=test',
'username' => $user,
'password' => $pass
)); $tokenStorage = new OAuth2\Storage\Mongo(array(
'host' => 'localhost',
'port' => 27017
)); $scopeStorage = new OAuth2\Storage\Memory(array(
'supported_scopes' => array(
'one-scope',
'two-scope',
'red-scope',
'blue-scope',
);
));

完成此操作后,创建OAuth服务器,并将存储对象作为关联数组传递,并将其id作为关键字:

// add your storage objects to the OAuth server
$server = new OAuth2\Server(array(
'client_credentials' => $clientStorage,
'access_token' => $tokenStorage,
'scope' => $scopeStorage,
));

你也可以在创建后添加它们,如果你喜欢:

$server->addStorage($clientStorage, 'client_credentials');
$server->addStorage($tokenStorage, 'access_token');
$server->addStorage($scopeStorage, 'scope');

由于您指定了存储ID,因此库仅将这些存储用于指定的功能。

对于存储器及其ID的列表,向下滚动到界面 上的自定义存储

oauth2-server-php-docs 存储的更多相关文章

  1. 使用 OAuth2-Server-php 在 Yii 框架上搭建 OAuth2 Server

    原文转自 http://www.cnblogs.com/ldms/p/4565547.html Yii 有很多 extension 可以使用,在查看了 Yii 官网上提供的与 OAuth 相关的扩展后 ...

  2. 使用 OAuth2-Server-php 搭建 OAuth2 Server

    Yii 有很多 extension 可以使用,在查看了 Yii 官网上提供的与 OAuth 相关的扩展后,发现了几个 OAuth2 的客户端扩展,但是并没有找到可以作为 OAuth2 Server 的 ...

  3. 开始使用 Docker (Linux 上运行 SQL Server) 上的 SQL Server 容器 - SQL Server | Microsoft Docs

    原文:开始使用 Docker (Linux 上运行 SQL Server) 上的 SQL Server 容器 - SQL Server | Microsoft Docs 快速入门:使用 Docker ...

  4. 第2周 页_SQL Server 中数据存储的基本单位

    原文:第2周 页_SQL Server 中数据存储的基本单位 上周通过探讨SQL Server如何执行一个查询奠定了基础.我也在那里提到页是8kb的缓存.今天我们对页进行进一步集中探讨,从性能调优角度 ...

  5. SQL Server 2016 查询存储性能优化小结

    SQL Server 2016已经发布了有半年多,相信还有很多小伙伴还没有开始使用,今天我们来谈谈SQL Server 2016 查询存储性能优化,希望大家能够喜欢 作为一个DBA,排除SQL Ser ...

  6. CAS3.5.x(x>1)支持OAuth2 server

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  7. 第2/24周 页_SQL Server 中数据存储的基本单位

    上周通过探讨SQL Server如何执行一个查询奠定了基础.我也在那里提到页是8kb的缓存.今天我们对页进行进一步集中探讨,从性能调优角度挖掘出更多的细节. 页是SQL Server的基础,在SQL ...

  8. SQL Server 2012 列存储索引分析(翻译)

    一.概述 列存储索引是SQL Server 2012中为提高数据查询的性能而引入的一个新特性,顾名思义,数据以列的方式存储在页中,不同于聚集索引.非聚集索引及堆表等以行为单位的方式存储.因为它并不要求 ...

  9. Windows Server 2016软件定义存储:Storage Spaces Direct的关键特性

    [TechTarget中国原创] 微软在Windows Server 2016 Technical Preview 2中引入了Storage Spaces Direct.这个特性将本地存储扩展为高可用 ...

  10. SQL Server 2012 列存储索引分析(转载)

    一.概述 列存储索引是SQL Server 2012中为提高数据查询的性能而引入的一个新特性,顾名思义,数据以列的方式存储在页中,不同于聚集索引.非聚集索引及堆表等以行为单位的方式存储.因为它并不要求 ...

随机推荐

  1. Linux下的sqlserver简单试用

    微软自2017年就推出了可以在linux上使用的sql-server,最近接触到了一个用sqlserver的项目,便尝试使用了一下. 下载 为了简化安装,我还是使用的docker的方式,镜像可以直接从 ...

  2. delphi ribbon使用

    http://blog.csdn.net/davinciyxw/article/details/5604209 1.TextEditor(barEditItem)取文本 string editValu ...

  3. JavaScript进阶系列05,事件的执行时机, 使用addEventListener为元素同时注册多个事件,事件参数

    本篇体验JavaScript事件的基本面,包括: ■ 事件必须在页面元素加载之后起效■ 点击事件的一个简单例子■ 为元素注册多个点击事件■ 获取事件参数 ■ 跨浏览器事件处理 □ 事件必须在页面元素加 ...

  4. Android 数据存储03之SQLite

    SQLite数据存储 Android 集成了 SQLite 数据库.它存储在 /data/data/< 项目文件夹 >/databases/ 下.Android 开发中使用 SQLite ...

  5. EBS 系统当前完成请求时间监测

    /* Formatted on 2018/3/14 23:32:17 (QP5 v5.256.13226.35538) */ SELECT REQUEST_ID , PROGRAM , ROUND ( ...

  6. ibatis.net:第一天,什么是 mybatis.net ?

    ibatis.net 是一个“数据映射框架”,它使得面向对应的应用程序非常的方面使用关系数据.ibatis.net 通过使用 xml 或 attribute 来解耦对象和SQL或存储过程.简单是 ib ...

  7. 查看Linux进程CPU过高具体的线程堆栈(不中断程序)

    转自:http://blog.csdn.net/mergerly/article/details/47731305 1.TOP命令,找到占用CPU最高的进程 $ top top - 20:11:45  ...

  8. 识骨寻踪第十二季/全集Bones迅雷下载

    本季 Bones (2015)看点:<识骨寻踪>(FOX)2005年推出的罪案题材的电视连续剧.该剧部分内容改编自前刑侦检验官.现任该剧制作人凯丝·莱克斯出版的一系列侦探小说.Bones的 ...

  9. 开源项目MultiChoiceAdapter详解(二)——MultiChoiceArrayAdapter的使用

    MultiChoiceArrayAdapter其实就是可以多选的ArrayAdapter了,ArrayAdpter我们已经很熟悉了.MultiChoiceArrayAdapter这个类是抽象类,所以使 ...

  10. MySQL中的IFNULL,IF,NULLIF函数

    MySQL中的IFNULL函数和IF函数 MySQL中的IFNULL函数类似于Oracle中的NVL函数,其表达式为:IFNULL(expr1,expr2),含义是:如果第一个参数不为空,则返回第一个 ...