eutkin/aadphp

Microsoft Azure Active Directory Authentication Library (AAD) for PHP

v1.0.1 2017-07-10 08:33 UTC

This package is not auto-updated.

Last update: 2024-09-15 03:49:48 UTC


README

此示例包含一个用于访问 Azure Active Directory 的 PHP 库以及一个示例应用程序,该应用程序展示了该库的功能以及新的 Microsoft School Data Sync API。

用法

构造 HttpClient 对象

$httpclient = new \microsoft\aadphp\HttpClient;

构造存储对象。存储对象需要实现 \microsoft\aadphp\OIDC\StorageInterface 接口。目前,在 microsoft\aadphp\OIDC\StorageProviders 命名空间下提供了两个示例实现 - SQLiteSession,但您可能需要根据您的存储需求或环境自己实现此类。初始化 SQLite 存储提供程序(如 samples 文件夹所示)

$storage = new \microsoft\aadphp\OIDC\StorageInterface\SQLite(__DIR__.'/storagedb.sqlite');

或初始化 Session 存储提供程序

$storage = new \microsoft\aadphp\OIDC\StorageInterface\Session();

使用 $httpclient 和 $storage 实例构造 AzureAD 客户端类。

$client = new \microsoft\aadphp\AAD\Client($httpclient, $storage);

设置您的客户端 ID、客户端密钥和重定向 URI。

$client->set_clientid($clientid);
$client->set_clientsecret($clientsecret);
$client->set_redirecturi($redirecturi);

您的客户端现在可以使用了。

要发起授权请求

$client->authrequest();

处理授权请求响应(这应该在您的重定向 URI 页面中完成)

list($idtoken, $tokenparams, $stateparams) = $client->handle_auth_response($_REQUEST);

执行资源所有者凭据请求

$returned = $client->rocredsrequest($_POST['username'], $_POST['password']);
$idtoken = \microsoft\aadphp\AAD\IDToken::instance_from_encoded($returned['id_token']);

要从 IDToken 获取用户信息,请调用 $idtoken 对象的 ->claim()。这返回 OpenID Connect 声明

$idtoken->claim('name');
$idtoken->claim('upn');

授权代码流

可以使用此库实现 3 种授权代码流。

1. 授权代码流

这是常见的三脚 OAuth2 流。如果您尚未登录到 Azure AD,此操作将您重定向到 Azure AD 登录页面并带您完成登录过程。示例:要启动授权请求,请调用函数 $client->authrequest()。客户端设置为使用此方法作为默认方法。

$client->authrequest();

此操作将通过将资源所有者的用户代理重定向到身份验证端点来执行授权请求。您的请求将在您在 config.php 中之前设置的早期重定向 URI 中处理并返回响应。要处理响应,请调用函数 $client->handle_auth_response($_REQUEST)。

list($idtoken, $tokenparams, $stateparams) = $client->handle_auth_response($_REQUEST);

现在,$idtoken 具有 JWT 令牌的对象(您可以使用此令牌声明用户信息),$tokenparams 包含令牌参数的数组,即 access_token、refresh_token,$stateparams 包含状态参数。

2. 混合代码流

这是一个更快的 ID Token OAuth2 流。如果您尚未登录到 Azure AD,此操作将您重定向到 Azure AD 登录页面并带您完成登录过程。示例:要启动混合流请求,将客户端设置为使用混合流,然后调用函数 $client->authrequest()。它将返回 IDToken 对象列表和存储的状态参数。

$client->set_authflow('hybrid');
$client->authrequest();

此操作将通过将资源所有者的用户代理重定向到身份验证端点来执行授权请求。您的请求将在您在 config.php 中之前设置的早期重定向 URI 中处理并返回响应。要处理响应,请调用函数 $client->handle_auth_response($_REQUEST)。

list($idtoken, $stateparams) = $client->handle_id_token($_REQUEST);

现在,$idtoken 具有 JWT 令牌的对象(您可以使用此令牌声明用户信息),$stateparams 包含状态参数。

3. 资源所有者密码凭据授权

这允许您直接在登录表单中输入 Azure AD 登录凭据,并在幕后进行身份验证。您将不会被重定向到 Azure AD 进行登录。要执行资源所有者凭据请求

$returned = $client->rocredsrequest($_POST['username'], $_POST['password']);

此操作将通过将用户凭据发送到令牌端点来执行授权请求。响应($returned)包含令牌参数的数组,即 id_token、access_token、refresh_token。

示例和文档

samples” 文件夹包含该库的示例实现,展示了以多种不同方式演示基本身份验证。

社区帮助与支持

我们利用 Stack Overflow 与社区合作,支持 Azure Active Directory 及其 SDK,包括这个!我们强烈建议你在 Stack Overflow 上提问(我们都在那里!)。同时浏览现有问题,看看是否有人之前已经提出过你的问题。

我们建议你使用“adal”标签,这样我们就能看到了!这是 Stack Overflow 上关于 AAD 的最新问答:http://stackoverflow.com/questions/tagged/adal