rps / oauth2
此包的最新版本(dev-master)没有可用的许可证信息。
TYPO3 Flow OAuth2 认证包。
dev-master
2015-01-10 07:46 UTC
Requires
- typo3/flow: *
This package is not auto-updated.
Last update: 2024-09-28 18:05:14 UTC
README
这是 Kyoki.OAuth2 包的一个分支。
这是一个 Flow 包,它提供了一个 OAuth 2 提供者,例如,您可以使用它来允许第三方客户端(例如移动客户端)访问您的 Flow 应用程序 API,而无需将用户名和密码告诉应用程序
逐步设置
- 在 Flow 中安装 Kyoki.OAuth2 包
将包复制到 Flow/Packages/Applications 内部
cd /var/www/Flow/Packages/Applications git clone git://github.com/farconada/Kyoki.OAuth2.git cd /var/www/Flow ./flow doctrine:update
- 设置 Flow 配置文件 configurations/Settings.yaml
TYPO3: Flow: security: enable: TRUE authentication: authenticationStrategy: atLeastOneToken providers: # your DefaultProvider DefaultProvider: provider: PersistedUsernamePasswordProvider entryPoint: 'WebRedirect' entryPointOptions: uri: '/login' requestPatterns: # a regexp pattern to disable the DefaultProvider in every Controller for every package named ApiController or TokenController # It could be a better regexp of your own # TokenController belongs to the Kyoki.OAuth2 package # ApiController (or any other controller) is the controller securized by an OAuth access token controllerObjectName: '(?!.*(Api|Token)Controller).*' OAuthTokenProvider: provider: Kyoki\OAuth2\Security\Authentication\Provider\AccessTokenProvider token: Kyoki\OAuth2\Security\Authentication\Token\AccessTokenHttpBasic requestPatterns: # ApiController (or any other controller) is the controller securized by an OAuth access token controllerObjectName: Acme\Demoapp\Controller\ApiController entryPoint: HttpBasic entryPointOptions: realm: 'OAuth2 Access Token Authentication'
Kyoki.OAuth2 中已定义了 /authorize 和 /token 路由
- 确保您的包中的 authenticateAction 在成功登录后重定向到请求的 URL
例如
public function authenticateAction() { try { $this->authenticationManager->authenticate(); } catch (\TYPO3\Flow\Security\Exception\AuthenticationRequiredException $exception) { $this->flashMessageContainer->addMessage(new \TYPO3\Flow\Error\Message('Wrong username or password.')); $this->redirect('login'); } if ($interceptedRequest = $this->securityContext->getInterceptedRequest()) { $this->redirect($interceptedRequest->getControllerActionName(), $interceptedRequest->getControllerName(), $interceptedRequest->getControllerPackageKey(), $interceptedRequest->getArguments()); } else { $this->redirect('index'); } }
- 创建一个控制器并使用 Policy.yaml 进行保护
有两个角色
OAuth 此角色在 Kyoki.OAuth2 包中声明,允许请求令牌
myscope(或您想要的名称) 此角色应与 OAuthScope 标识符匹配,并需要分配给用户才能访问由 OAuth 令牌保护的应用程序资源
resources: methods: Acme_Demoapp_Api: 'method(Acme\Demoapp\Controller\ApiController->.*Action())' roles: myscope: [] User: [OAuth,myscope] acls: User: methods: Acme_Demoapp_Api: GRANT myscope: methods: Acme_Demoapp_Api: GRANT
- 创建所需的域对象:Accounts、OAuthClient 和 OAuthScope
OAuthClient:是一个 API,它可以由用户自己拥有或由其他用户拥有,例如 API 拥有者。OAuthClient 中的 redirectUri 属性定义了必须与您查询 API 的 URL 匹配的 URL 的起始部分。关联的帐户也很重要,因为您在请求新的令牌时以该帐户的身份识别
OAuthScope:当有人请求访问权限时,它会发送一个包含在参数中的范围,此范围必须与 Policy.yaml 中定义的角色名称匹配,并定义此范围权限
注意
- 目录 Tests/lamp/ 中有一个 Acme.Demoapp 包
- 您可以使用 vagrant 在一个完全安装了 OAuth 的 Flow 上部署新的 virtualbox
- 目录 Tests/lamp/client 中有一个 OAuth 客户端/消费者的示例