Shopware前端客户SSO认证实现方案咨询
实现Shopware前端SSO(基于Entra ID Windows Identity Platform)
核心思路
Shopware前端SSO本质是通过**OIDC(OpenID Connect)**协议对接Entra ID——Windows Identity Platform原生支持OIDC,我们可以通过Shopware扩展+自定义前端逻辑实现前端跳转认证,而非仅依赖后端认证方案。
具体实现步骤
1. 在Entra ID中配置应用注册
- 登录Entra ID控制台,创建**单页应用(SPA)**类型的应用注册(适配前端SSO场景)
- 配置重定向URI:填写Shopware前端的回调地址,比如
https://你的shopware域名/account/sso/callback - 记录关键信息:客户端ID(Client ID)、租户ID(Tenant ID)、授权端点、令牌端点
2. 配置Shopware后端支持OIDC
- 安装Shopware官方
OAuth2插件,或自定义插件处理OIDC令牌验证 - 在插件中配置Entra ID的OIDC参数:
// 示例插件配置参数 $oidcConfig = [ 'client_id' => '你的Entra ID客户端ID', 'tenant_id' => '你的Entra ID租户ID', 'authorization_endpoint' => 'https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/authorize', 'token_endpoint' => 'https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token', 'userinfo_endpoint' => 'https://graph.microsoft.com/oidc/userinfo', 'redirect_uri' => 'https://你的shopware域名/account/sso/callback', ]; - 实现后端回调接口:接收Entra ID返回的授权码,交换为访问令牌/ID令牌,验证令牌后创建或关联Shopware用户
3. 前端实现SSO跳转逻辑
在Shopware Storefront主题中添加自定义登录触发逻辑:
- 在登录页面添加「使用公司账号登录」按钮,点击后构造授权URL并跳转:
// 前端跳转示例代码 const clientId = '你的Entra ID客户端ID'; const tenantId = '你的Entra ID租户ID'; const redirectUri = encodeURIComponent('https://你的shopware域名/account/sso/callback'); const scope = encodeURIComponent('openid profile email'); const authUrl = `https://login.microsoftonline.com/${tenantId}/oauth2/v2.0/authorize?client_id=${clientId}&response_type=code&redirect_uri=${redirectUri}&scope=${scope}&response_mode=query`; window.location.href = authUrl; - 回调页面接收授权码,发送至Shopware后端验证接口,后端返回用户会话后,前端同步登录状态
4. 用户自动关联与创建
- 后端验证ID令牌后,提取用户邮箱、姓名等信息,检查Shopware内是否存在该邮箱的用户
- 存在则直接关联会话;不存在则自动创建内部用户(设置为员工角色,限制内部访问)
5. 内部访问限制(可选)
- 在Shopware中创建内部用户组,将自动生成的用户加入该组
- 在前端路由或后端接口添加权限校验,仅允许内部用户组访问商城
注意事项
- 确保Entra ID应用注册的重定向URI与Shopware配置完全一致,否则会出现回调失败
- 令牌验证必须在后端完成,前端仅负责跳转和会话同步,避免敏感令牌暴露
- 测试阶段可开启Entra ID调试模式,查看授权流程中的错误日志
内容的提问来源于stack exchange,提问作者bob
相关产品推荐
相关产品推荐

