Onelogin与Azure Web应用的OpenID认证无法正常运行如何解决
问题描述
微软Azure应用服务支持将OpenID作为Web应用的身份验证提供商,原有配置对接Auth0运行正常,对接OneLogin时,登录完成后浏览器返回错误:"The page cannot be displayed because an internal server error has occurred."
现有配置
{ "platform": { "enabled": true }, "globalValidation": { "requireAuthentication": true, "unauthenticatedClientAction": "RedirectToLoginPage", "redirectToProvider": "onelogin", "excludedPaths": [] }, "identityProviders": { "openIdConnectProviders": { "onelogin": { "enabled": true, "registration": { "clientId": "2a55cc10-ec26-0139-d4f3-063fe3b18f59195700", "clientCredential": { "secretSettingName": "onelogin" }, "openIdConnectConfiguration": { "wellKnownOpenIdConfiguration": "https://snapcomms-dev.onelogin.com/oidc/2/.well-known/openid-configuration" } }, "login": { "nameClaimType": "name", "scope": ["openid", "profile", "email"] } } }, "login": { "tokenStore": { "enabled": true }, "preserveUrlFragmentsForLogins": true }, "httpSettings": { "requireHttps": true } } }
错误信息
IIS捕获到500.74内部错误,错误由EasyAuthModule_32bit模块抛出,触发在.auth/login/onelogin/callback回调地址的请求处理阶段。
需调整的OneLogin及对应Azure配置
- 首先校验OneLogin侧OIDC应用的重定向URI配置:必须填写完整的Azure站点回调地址
https://<你的Azure站点域名>/.auth/login/onelogin/callback,不允许使用HTTP协议,域名需和实际访问的站点完全匹配 - 校验Azure应用配置中名为
onelogin的密钥值,必须和OneLogin OIDC应用生成的客户端密钥完全一致,若密钥遗失可在OneLogin应用管理页重新生成后同步更新到Azure配置 - 调整OneLogin OIDC应用的令牌签名算法:进入OneLogin应用的「SSO」配置页,将ID令牌的签名算法设置为RS256,Azure EasyAuth默认仅支持OIDC提供商使用非对称加密算法签名的ID令牌,使用HS256会直接触发校验失败
- 确认登录账号的访问权限:在OneLogin应用的「Users」配置页,确保当前测试登录的用户已被分配该应用的访问权限,未授权的用户登录会被OneLogin返回无效授权码,触发EasyAuth处理错误
- 可在Azure的OpenID配置中显式指定回调地址,避免自动解析异常:在
registration节点下新增redirectUri字段,值为上述的HTTPS回调地址即可
内容的提问来源于stack exchange,提问作者Cornada_Inflictor
相关产品推荐
相关产品推荐

