good-system/laravel-o365auth

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

0.1.10 2019-04-01 03:44 UTC

This package is auto-updated.

Last update: 2024-09-29 05:28:09 UTC


README

此包允许Laravel应用程序使用用户的Office 365帐户进行身份验证。

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

先决条件

Microsoft应用程序和.env

https://apps.dev.microsoft.com创建一个应用程序。并将以下内容添加到.env文件中,用应用程序的参数替换。

# If any of the following is missing, authentication will fail.
O365_DOMAIN=ALLOWED-EMAIL-DOMAIN-NAMES,SEPARATED-BY-COMMA
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

用户模型

此包将寻找一个名为Laravel模型\O365User。这可能是对App\User或其它用户类的别名,如GoodSystem\User,可以在应用程序中显式设置。

安装

在Laravel应用程序根目录下运行composer require good-system/o365auth

Laravel(5.6及更高版本)应该可以“发现”此包,而无需将服务提供者添加到config/app.php

所需Laravel版本

此包可能与Laravel框架5.7之前的版本兼容,但尚未测试。

错误页面模板

如果存在,将查找并使用包中的错误模板。否则,将回退到默认的Laravel错误显示。

预期行为

默认路由

提供了两个默认路由

  • /o365auth/init
  • /o365auth/redirect

用户应始终从/o365auth/init开始,然后应被重定向到Office 365身份验证页面https://login.microsoftonline.com/common/oauth2/v2.0/authorize,并带有参数。

1. 成功场景

.env中由“O365_DOMAIN”指定的任何域上使用Office 365帐户成功认证后,

  • 如果系统不存在,并且用户模型配置正确,则将用户记录添加到系统(如果已存在则检索)
  • 授予系统访问权限(Laravel手动身份验证)
  • 用户最终被重定向到之前的页面或网站根目录/(这与.env中的“O365_REDIRECT_URL”无关)
  • 新用户和现有用户都可以绕过电子邮件验证,如果尚未验证(验证标志将手动设置)

2. Laravel身份验证错误

如果上述#2失败,虽然不太可能,但系统可能会抛出500错误——一些非常意外的问题。

3. 用户模型错误

如果上述#1失败是由于用户模型配置错误(这是可能的,但不是预期的),或者添加用户到系统时出现某些未知错误,也预期系统会抛出500错误。

4. 来自Microsoft的坏数据

可能是以下几种情况之一。

5. 电子邮件不在允许的域名列表中

预期系统会抛出403错误。