如何在Azure Portal中配置身份认证,解决本地URI无法使用的问题?
解决方案步骤
1. 修正Azure Portal的重定向URI配置
Azure AD仅允许http://localhost开头的非HTTPS重定向地址,其他自定义本地域名(比如你使用的myteam.local)必须走HTTPS协议,二选一完成配置即可:
- 方案1:临时调试用localhost地址,直接配置
http://localhost/login/microsoft/callback作为重定向URI - 方案2:给本地的myteam.local域名配置自签名SSL证书,走HTTPS访问,然后配置
https://myteam.local/login/microsoft/callback作为重定向URI
注意:配置的时候重定向URI的类型要选「Web」,不能选单页应用或者其他类型,否则回调会报错。
2. 调整Laravel项目配置
2.1 环境变量配置
修改项目根目录的.env文件,补充以下配置:
AZURE_CLIENT_ID=你在Azure Portal注册应用的应用程序(客户端)ID AZURE_CLIENT_SECRET=你在Azure Portal生成的客户端密码值 AZURE_REDIRECT_URI=和Azure Portal配置完全一致的重定向URI,比如https://myteam.local/login/microsoft/callback或者http://localhost/login/microsoft/callback AZURE_TENANT_ID=你在Azure Portal注册应用的目录(租户)ID
2.2 服务配置验证
打开config/services.php文件,确认microsoft配置项和以下内容一致:
'microsoft' => [ 'client_id' => env('AZURE_CLIENT_ID'), 'client_secret' => env('AZURE_CLIENT_SECRET'), 'redirect' => env('AZURE_REDIRECT_URI'), 'tenant' => env('AZURE_TENANT_ID', 'common'), // 单租户应用填对应租户ID,多租户应用填common ],
3. 本地HTTPS配置(选方案2时需要操作)
如果坚持要用myteam.local域名访问,可以用对应工具快速配置HTTPS:
- 用Laravel Valet的用户,直接在项目目录执行
valet secure myteam即可自动生成自签名证书,开启HTTPS访问 - 用Laravel Sail的用户,修改
docker-compose.yml的services.laravel.test.ports配置,加上443:443端口映射,启动后默认支持HTTPS访问 - 用其他集成环境(XAMPP、WAMP等)的用户,自行给站点配置自签名SSL证书即可
4. 回调路由验证
确认你的路由文件里已经注册了微软登录的路由和回调路由,示例如下:
// 跳转微软登录页 Route::get('/login/microsoft', [SocialiteController::class, 'redirectToMicrosoft']); // 微软回调处理 Route::get('/login/microsoft/callback', [SocialiteController::class, 'handleMicrosoftCallback']);
对应控制器的方法示例:
use Laravel\Socialite\Facades\Socialite; public function redirectToMicrosoft() { return Socialite::driver('microsoft')->redirect(); } public function handleMicrosoftCallback() { $user = Socialite::driver('microsoft')->user(); // 此处处理用户登录逻辑,比如查询用户是否存在、创建用户、写入会话等 return redirect()->route('dashboard'); }
内容的提问来源于stack exchange,提问作者TrJoke
相关产品推荐
相关产品推荐

