singingfox/o365auth

此包的最新版本(0.1.1)没有可用的许可证信息。

0.1.1 2018-09-14 22:35 UTC

This package is auto-updated.

Last update: 2024-09-16 03:18:08 UTC


README

此包将Office 365身份验证添加到Laravel应用程序中。

该包主要基于来自microsoftgraph/php-connect-sample的程序逻辑,但旨在更容易与Laravel 5集成,并利用更多的Laravel原生功能。

预期行为

  • 失败的Office 365账户认证将不被允许访问 -- 500错误
  • 成功的Office 365账户认证,但不属于指定的域,将不被允许访问 -- 404错误
  • 在指定的域上的Office 365账户成功认证后,用户将被重定向到前一个页面或网站根URL。
  • 如果成功认证的用户不在系统中,用户将被添加
  • 新用户或现有用户,如果成功认证,将能够绕过电子邮件验证(验证标志将手动设置)

安装和基本配置

使用Composer安装包

(注意:packagist尚未更新,以下可能无法工作)

首先,在Laravel应用程序根目录下运行composer require singingfox/o365auth

将以下内容添加到composer.json

Singingfox\\O365Auth\\": "vendor/singingfox/o365auth/src

将以下内容添加到config/app.php

Singingfox\O365Auth\O365AuthServiceProvider::class,

运行

composer dump-autoload

或者,将以下内容添加到composer.json,然后运行composer update

"required": [
    ...
    "singingfox/o365auth": "*"
],

依赖项

安装此包时,以下包及其依赖项也将被拉入。

"league/oauth2-client": "^2.3.*",
"microsoft/microsoft-graph": "^1.3.*"

配置

在Laravel .env中需要的Office 365参数

将以下内容添加到.env文件

O365_DOMAIN=ALLOWED-EMAIL-DOMAIN-NAME
O365_CLIENT_ID=YOUR-APPLICATION-ID-OR-CLIENT-ID-IN-CREATED-MICROSOFT-APPLICATION
O365_CLIENT_SECRET=YOUR-CLIENT-SECRETE-OR-CLIENT-PASSWORD-IN-CREATED-MICROSOFT-APPLICATION
# This needs to be the full URL (https)
O365_REDIRECT_URL=YOUR-REDIRECT-URL-IN-CREATED-MICROSOFT-APPLICATION

如果没有指定,成功认证将尝试将应用程序重定向到认证之前的URL,或者回退到网站根"/"。

显示特定错误

添加一个新的视图resources/views/errors/500.blade.php。内容可以是这样的

<h1>{{ $exception->getMessage() }}</h1>

这是可选的,但如果完成,则可以从此包显示特定的错误消息。否则,将显示以下通用错误消息

哎呀,好像出错了。

认证后要做什么

此时,内置的程序逻辑尝试

以下是在成功认证后可以执行的一些示例

  1. 检索存储在会话中的access_token
  2. 初始化一个Graph对象,并将其分配给它
  3. 现在我们应该能够调用各种Graph API端点并执行我们需要的任何操作
  4. 可选的,可以在Laravel应用程序根目录下的.env中指定O365_AFTER_AUTH_URL,然后成功认证过程将随后执行一些即时操作,例如本地设置认证用户等。以下示例路由并不真正执行此操作。它只说明了如何获取一些用户信息--电子邮件。
Route::get("/o365-user/email", function () {
    if (session_status() == PHP_SESSION_NONE)
        session_start();

    $graph = new \Microsoft\Graph\Graph();
    $graph->setAccessToken($_SESSION['access_token']);

    $me = $graph->createRequest("get", "/me")
        ->setReturnType(\Microsoft\Graph\Model\User::class)
        ->execute();

    return $me->getMail();
});

此认证过程还可以用于注册允许访问的新用户。