good-system / laravel-o365auth
Requires
- laravel/framework: 5.8.*
- league/oauth2-client: ^2.3
- microsoft/microsoft-graph: ^1.3
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
错误。