【发布时间】:2022-01-17 03:39:03
【问题描述】:
我正在 Azure 中创建应用服务,并尝试使用 Auth0 连接 OpenID Connect 身份验证。
问题:
弹出Auth0的登录页面,可以登录了。 Auth0 使用授权码将浏览器重定向到我的应用的回调 URL。应用返回 HTTP 500 内部服务器错误。
...easyauth_docker.log 表明 Azure 身份验证中间件抛出了以下异常:
...
System.ArgumentNullException: Value cannot be null. (Parameter 'rawToken') 2021-12-13T15:40:26.451788664Z at Microsoft.Azure.AppService.Middleware.ModuleUtils.ThrowIfNullOrEmpty(String argName, String argValue) in /EasyAuth/Microsoft.Azure.AppService.Middleware.Modules/ModuleUtils.cs:line 867 2021-12-13T15:40:26.451799664Z at Microsoft.Azure.AppService.Middleware.ModuleUtils.ValidateJwt(String siteName, String rawToken, TokenValidationParameters parameters, String provider, Boolean useLegacyClaims, JwtSecurityToken& jwt, Exception& handledException, Boolean isLoginAction) in /EasyAuth/Microsoft.Azure.AppService.Middleware.Modules/ModuleUtils.cs:line 567
...
实施:
- 在 Azure 中使用 Linux/Node.js 创建了应用服务。该应用程序无需身份验证即可使用:
https://<MY_APP>.azurewebsites.net。我也可以用 VS Code 调试它。 - 创建了一个常规 Web 应用程序类型的 Auth0 应用程序(授权码授予)。添加了允许的回调 URL:
https://<MY_APP>.azurewebsites.net/.auth/login/auth0/callback - 在应用服务上启用了身份验证。添加了 OpenID Connect 身份提供程序。指定的元数据 URL:
https://<MY_AUTH0_DOMAIN>/.well-known/openid-configuration(URL 在浏览器中工作)。从 Auth0 页面复制了客户端 ID 和客户端密码。
其他信息:
- Auth0 的日志包含两个条目:成功登录和成功交换:“访问令牌的授权码”
- 登录页面后,重定向调用未到达我的 node.js 代码(在调试器中检查)。
【问题讨论】:
标签: azure openid-connect auth0 azure-appservice azure-authentication