CookieAuthentication和WindowsAzureADAuthentication选项之间的区别

时间:2019-04-22 17:34:42

标签: azure authentication azure-active-directory

嗨,我正在尝试使用AzureAD对webapi进行简单身份验证。在这种情况下,当我们使用Azure AD添加连接的服务时,Startup.cs类将添加以下代码

app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
TokenValidationParameters = new TokenValidationParameters
{
ValidAudience = ConfigurationManager.AppSettings["ida:Audience"]
},
});

当我完成了一些认证教程时,我看到人们要求使用如下所示的东西

app.UseCookieAuthentication(new CookieAuthenticationOptions());
        app.UseOpenIdConnectAuthentication(
            new OpenIdConnectAuthenticationOptions{....
}

这两个之间有什么区别,我们不应该使用名称中的AzureAD选项吗,并且因为我们使用AzureAD Connected Services进行webApi身份验证。有人可以澄清吗?

1 个答案:

答案 0 :(得分:1)

Cookie身份验证

Cookie认证使用HTTP cookies来认证客户端请求并维护会话信息。其工作原理如下:

  1. 客户端将登录请求发送到服务器。
  2. 成功登录后,服务器响应包括Set-Cookie 标头,其中包含cookie名称,值,有效时间和一些 其他信息
  3. 客户端需要在所有Cookie头中发送此cookie 对服务器的后续请求。
  4. 在注销操作中,服务器发回Set-Cookie标头 导致Cookie过期
  

注意:Cookie身份验证易受跨站请求伪造(CSRF)攻击的影响,因此应与其他身份验证一起使用   安全措施,例如CSRF tokens。有关更多详细信息,请查看here

Azure Active Directory身份验证:

您知道Azure Active Directory是一种基于令牌的现代身份验证,它提供了单点登录(SSO),允许用户使用一个密码(或智能卡)对网络上的多个服务器进行身份验证,而无需重新输入凭据。对于无需记住多个密码或一遍又一遍地通过身份验证过程来访问不同资源的用户,这显然是一个方便。

主要是AAD使用JSON Web Token(JWT)。从客户端接收到凭据后,服务器会验证凭据并生成包含用户信息的签名JWT。

它还支持以下最受欢迎的现代身份验证协议。

  1. OAuth 2.0
  2. OpenID Connect
  3. WS-Federation
  4. SAML 2.0
  

注意:令牌将永远不会存储在服务器中(无状态)。

因此 主要区别 是基于cookie的身份验证通常将您的用户敏感信息存储在服务器上,因为它可以维护会话,而另一方面,基于令牌的身份验证则很安全,并且不要保留敏感信息。

请参见下面的这些拖曳架构的basic differenceenter image description here

选择正确的身份验证:

在这里,我向您显示一个流程图,该流程图增强了您为应用程序选择正确的身份验证的想法。在下面看看:

enter image description here

您也可以查看here,以提高清晰度。非常感谢你。编码愉快!