无法使用 Azure AD 进行身份验证,丢失 cookie 和重定向显示没有权限

Cannot Authenticate with Azure AD, losing cookie and redirect is showing no permissions

老实说,真的做噩梦了。

我有来自 https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2/tree/master/1-WebApp-OIDC 的存储库,它应该使用 ASP Core 3.0 设置 Azure AD 和 Open Id。

我正在使用 Azure 使用 ASP Core 3.0 MVC 部署应用程序。 我已将上述回购协议实施到我的解决方案中,它应该处理 startup.cs 中的所有内容,我的本地主机工作得非常好。

启动与 1-WebApp-OIDC 解决方案相同(日志记录和 DI 相关注册除外)。

该应用程序已在 Azure 门户中注册,租户 ID 和客户端 ID 没有问题,正确的重定向也在那里。 App Service Auth 也被关闭(我读到这可能是一个问题,因为许多人已经通过关闭它解决了这个问题)。 还有 Home,Index 控制器具有 [Authorize] 属性。

现在说到部署,我不断得到; 您无权查看此目录或页面。 在我的 /signin-oidc 重定向 url 上。 请注意,即使不使用 openidconnect class 库,我也会收到此消息。

如果我去 https://mysite.azurewebsites.net/.auth/login/aad/callback - 我得到 'You have successfully logged in' 页面,其中包含 'RETURN TO THE WEBSITE' link。 单击后,返回与上面相同的消息。

我也从 https://mysite.azurewebsites.net/.auth.me - have read 获得了一个令牌,但他能够通过登录,只是没有获得正确的声明身份。

现在 .. 当我在域的登录处签入 Azure 时,它​​显示为成功。 然后我登录 Kudu 以检查日志(在 .../application 中)是否存在矛盾。

诊断日志说:

2020-02-01 10:32:19.279 +00:00 [Debug] Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware: Request did not match any endpoints
2020-02-01 10:32:19.279 +00:00 [Debug] Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler: AuthenticationScheme: AzureADCookie was not authenticated.

为每个会话生成 guid 的另一组日志显示:

2020-02-01T10:32:01  PID[3780] Verbose     Received request: GET https://mysite.azurewebsites.net/
2020-02-01T10:32:01  PID[3780] Information Redirecting: https://login.windows.net/89f3808f-0cff-4297-b17a-313007c7b8a6/oauth2/authorize?response_type=id_token&redirect_uri=https%3A%2F%2Fmysite.azurewebsites.net%2F.auth%2Flogin%2Faad%2Fcallback&client_id=f70bd4d6-3cb3-463e-9fca-974053e2f177&scope=openid+profile+email&response_mode=form_post&nonce=6f1c5c8d07f5481193439dd95c3cf03b_20200201103701&state=redir%3D%252F
2020-02-01T10:32:02  PID[3780] Verbose     Received request: POST https://mysite.azurewebsites.net/.auth/login/aad/callback
2020-02-01T10:32:02  PID[3780] Verbose     JWT validation succeeded. Subject: 'C6JYPu8NBYT8sC-s6G33w6sxNkct28RdeeyfL1SndjA', Issuer: 'https://sts.windows.net/89f3808f-0cff-4297-b17a-313007c7b8a6/'.
2020-02-01T10:32:02  PID[3780] Information Login completed for 'DanADLogin@company.com'. Provider: 'aad'.
2020-02-01T10:32:02  PID[3780] Verbose     Writing 'AppServiceAuthSession' cookie for site 'mysite.azurewebsites.net'. Length: 920.
2020-02-01T10:32:02  PID[3780] Information Redirecting: https://mysite.azurewebsites.net/
2020-02-01T10:32:02  PID[3780] Verbose     Received request: GET https://mysite.azurewebsites.net/
2020-02-01T10:32:02  PID[3780] Verbose     Found 'AppServiceAuthSession' cookie for site 'mysite.azurewebsites.net'. Length: 920.
2020-02-01T10:32:02  PID[3780] Verbose     Authenticated DanADLogin@company.com successfully using 'Session Cookie' authentication.
2020-02-01T10:32:19  PID[3780] Verbose     Received request: POST https://mysite.azurewebsites.net/signin-oidc
2020-02-01T10:32:19  PID[3780] Verbose     Found 'AppServiceAuthSession' cookie for site 'mysite.azurewebsites.net'. Length: 920.
2020-02-01T10:32:19  PID[3780] Information Sending response: 403.60 Forbidden
2020-02-01T10:32:19  PID[3780] Warning     Cross-site request forgery detected for user 'DanADLogin@company.com' from referer 'login.microsoftonline.com'!
2020-02-01T10:32:19  PID[3780] Verbose     Received request: GET https://mysite.azurewebsites.net/favicon.ico
2020-02-01T10:32:19  PID[3780] Verbose     Found 'AppServiceAuthSession' cookie for site 'mysite.azurewebsites.net'. Length: 920.
2020-02-01T10:32:19  PID[3780] Verbose     Authenticated DanADLogin@company.com successfully using 'Session Cookie' authentication.

很明显,cookie 在某处丢失了,我读到了一个重定向循环,该循环会干扰来自核心的 cookie 和来自开放 ID 的 cookie。 stack overflow之类的文章我都翻遍了,都没用

有一个问题非常相似,但使用 Google Auth - Requesting refresh token fails.No refresh tokens were found in the token store。这不适用于 AAD。

我真的无能为力了,我已经坚持够久了,我想再花一天时间我可能会发疯。我敢肯定它不会这么难。

如有任何帮助或指导,我们将不胜感激。

显然很感兴趣哈哈...

这实际上与 Azure AD 或 OpenId 完全无关。

我的数据层中的数据库调用在我的家庭控制器(不在 Azure 中)中调用外部数据库,引发了所有这些问题。