hrevert/ht-oauth-server-client-module

一个为 zfr-oauth2-server 提供自定义授权的 Zend Framework 2 模块,用于通过第三方应用程序(如 Facebook、Google 等)验证用户。

0.3.0 2015-08-08 05:00 UTC

This package is auto-updated.

Last update: 2024-09-13 02:21:32 UTC


README

一个为 zfr-oauth2-server 提供自定义授权的 Zend Framework 2 模块,用于通过第三方应用程序(如 Facebook、Google 等)验证用户。

Master Branch Build Status Latest Stable Version Latest Unstable Version Total Downloads

名字的含义是什么?

该模块为 OAuth2 服务器提供授权,同时也是一个 Facebook、Google 等OAuth2 服务器客户端。因此,它被命名为“服务器”和“客户端”。

安装

  • "hrevert/ht-oauth-server-client-module": "0.3.*" 添加到 composer.json,然后运行 php composer.phar update
  • config/application.config.php 中启用以下模块。
'modules' => array(
    'ZfrOAuth2Module\Server',
    'HtLeagueOauthClientModule',
    'HtOauthClientModule', 
    'HtOauth\Server\ClientModule',
),

配置模块

设置用户类

用户类必须实现 Hrevert\OauthClient\Model\UserInterface 接口。然后,您需要修改 Doctrine 映射以将此接口与您自己的用户类关联起来。

return [
    'doctrine' => [
        'entity_resolver' => [
            'orm_default' => [
                'Hrevert\OauthClient\Model\UserInterface' => 'Application\Entity\User'
            ]
        ]
    ]
]

提供者配置

您需要定义客户端 ID、客户端密钥和其他配置。有关这些配置,请参阅 此处

添加授权类型

return [
    'zfr_oauth2_server' => [
        'grants' => [
            // .. other grants,
            'HtOauth\Server\ClientModule\Grant\Oauth2Client',
        ]
    ]
]

启用提供者

通过向 oauth_provider 表中添加记录来启用提供者。

自动创建用户

当新用户尝试登录时,默认情况下不允许登录。

要自动创建新用户,您需要指定用于创建用户的可调用对象。

return [
    'ht_oauth_service_client' => [
        'create_user_callable' => function(\HtLeagueOauthClientModule\Model\UserInterface $userDetails) {
            $user = ......;
            
            $userProvider = new \Hrevert\OauthClient\Entity\UserProvider();
            $userProvider->setUser($user);
            
            return $userProvider; 

            // or just

            $user = ......;

            return $user;
        }
    ]
];

它如何工作

使用 OAuth 2.0 登录

  1. 客户端:客户端向 /oauth/token 服务器发送带有 OAuth2 授权代码或访问令牌的 POST 请求。
  2. 服务器:使用 授权代码,将其交换为 提供者访问令牌
  3. 服务器:使用步骤 2 中的 提供者访问令牌 获取用户信息。
  4. 服务器:通过唯一的 提供者 ID 查找用户。如果用户已存在,则获取现有用户,否则创建新的用户帐户。
  5. 服务器:回复一个 新的访问令牌