无法使用 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 中)中调用外部数据库,引发了所有这些问题。
老实说,真的做噩梦了。
我有来自 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 中)中调用外部数据库,引发了所有这些问题。