vinhhoang/oauth2-azure

Oauth2 Azure 登录

v1.0.4 2023-11-08 04:51 UTC

This package is auto-updated.

Last update: 2024-09-08 09:09:49 UTC


README

本软件包基于以下源代码构建 Azure Active Directory Provider for OAuth 2.0 Client.

安装

要安装,请使用 composer

composer require vinhhoang/oauth2-azure

配置

安装 Socialite 库后,在您的 config/app.php 配置文件中注册 VinhHoang\OAuth2\AzureServiceProvider

'providers' => [
    // Other service providers...

    VinhHoang\OAuth2\AzureServiceProvider::class,
],

同时,将 Azure 外观添加到您的 app 配置文件中的 aliases 数组

'Azure' =>  VinhHoang\OAuth2\Facades\Azure::class

然后,运行此命令

php artisan vendor:publish --provider="VinhHoang\OAuth2\AzureServiceProvider"

您还需要添加应用程序使用的 OAuth 服务的凭据。这些凭据应放在您的 config/oauth2azure.php 配置文件中

[
    'clientId'          => 'your-client-id',
    'clientSecret'      => 'your-client-secret',
    'redirectUri'       => 'your-redirect-uri',
    'tenant'            => 'your-tenant',
],

基本用法

<?php

namespace App\Http\Controllers;

use Azure;

class LoginController
{
    public function login()
    {
        return Azure::redirect();
    }

    public function handleCallback()
    {
        $token = Azure::getAccessToken('authorization_code', [
            'code' => $_GET['code'],
            'resource' => 'https://graph.windows.net',
        ]);

        try {
            // We got an access token, let's now get the user's details
              $me = Azure::get("me", $token);

        } catch (\Exception $e) {
            //
        }

        // Use this to interact with an API on the users behalf

        echo $token->getToken();
    }

    public function logout()
    {
        $redirect_url = "http://example.com";
        return redirect(Azure::getLogoutUrl($redirect_url));
    }
}

您需要定义控制器方法的路由

Route::get('login', 'LoginController@login');
Route::get('login/callback', 'LoginController@handleCallback');
Route::get('logout', 'LoginController@logout');

资源所有者

从版本 1.1.0 开始,资源所有者信息由 Azure Active Directory 通过 access_token 中的 JWT 解析。它公开了少量属性和一个函数。

示例

$resourceOwner = Azure::getResourceOwner($token);
echo 'Hello, '.$resourceOwner->getFirstName().'!';

公开的属性和函数包括

  • getId() - 获取用户的对象 id - 每个用户都是唯一的
  • getEmail() - 获取用户的电子邮件 - 每个用户都是唯一的
  • getFirstName() - 获取用户的首名
  • getLastName() - 获取用户的姓氏
  • getTenantId() - 获取用户所属租户的 id
  • getUpn() - 获取用户的主用户名称,也可以用作用户的电子邮件地址
  • claim($name) - 从 JWT 获取任何其他声明(指定为 $name),完整列表可在此处找到 这里