pvodicka/openid-connect-php

该包最新版本(0.3.4)没有可用的许可信息。

基础 OpenID Connect 客户端

0.3.4 2018-01-15 09:58 UTC

This package is auto-updated.

Last update: 2024-09-20 05:44:22 UTC


README

这是一个简单的库,允许应用程序通过基本的 OpenID Connect 流程进行用户认证。该库旨在通过简化设置过程来鼓励 OpenID Connect 的使用,即使是那些对 OpenID Connect 协议了解不多的开发者也可以轻松设置认证。

特别感谢 Justin Richer 和 Amanda Anganes 对该协议的帮助和支持。

要求

  1. PHP 5.4 或更高版本
  2. CURL 扩展
  3. JSON 扩展

安装

  1. 使用 composer 安装库
composer require jumbojett/openid-connect-php
  1. 包含 composer 自动加载器
require '/vendor/autoload.php';

示例 1:基本客户端

use Jumbojett\OpenIDConnectClient;

$oidc = new OpenIDConnectClient('https://id.provider.com',
                                'ClientIDHere',
                                'ClientSecretHere');
$oidc->setCertPath('/path/to/my.cert');
$oidc->authenticate();
$name = $oidc->requestUserInfo('given_name');

请参阅 openid 规范以获取可用的用户属性

示例 2:动态注册

use Jumbojett\OpenIDConnectClient;

$oidc = new OpenIDConnectClient("https://id.provider.com");

$oidc->register();
$client_id = $oidc->getClientID();
$client_secret = $oidc->getClientSecret();

// Be sure to add logic to store the client id and client secret

示例 3:网络和安全

// Configure a proxy
$oidc->setHttpProxy("http://my.proxy.com:80/");

// Configure a cert
$oidc->setCertPath("/path/to/my.cert");

示例 4:请求客户端凭证令牌

use Jumbojett\OpenIDConnectClient;

$oidc = new OpenIDConnectClient('https://id.provider.com',
                                'ClientIDHere',
                                'ClientSecretHere');
$oidc->providerConfigParam(array('token_endpoint'=>'https://id.provider.com/connect/token'));
$oidc->addScope('my_scope');

// this assumes success (to validate check if the access_token property is there and a valid JWT) :
$clientCredentialsToken = $oidc->requestClientCredentialsToken()->access_token;

示例 5:请求资源所有者令牌(带客户端认证)

use Jumbojett\OpenIDConnectClient;

$oidc = new OpenIDConnectClient('https://id.provider.com',
                                'ClientIDHere',
                                'ClientSecretHere');
$oidc->providerConfigParam(array('token_endpoint'=>'https://id.provider.com/connect/token'));
$oidc->addScope('my_scope');

//Add username and password
$oidc->addAuthParam(array('username'=>'<Username>'));
$oidc->addAuthParam(array('password'=>'<Password>'));

//Perform the auth and return the token (to validate check if the access_token property is there and a valid JWT) :
$token = $oidc->requestResourceOwnerToken(TRUE)->access_token;

开发环境

在某些情况下,您可能需要在开发系统上禁用 SSL 安全性。注意:这不建议在生产系统上使用。

$oidc->setVerifyHost(false);
$oidc->setVerifyPeer(false);

待办事项

  • 动态注册不支持注册认证令牌和端点

贡献

  • 一旦合并,所有 pull 请求都应添加到 changelog.md 文件中。