与Asp.net Web API相关的身份验证和授权的疑问

15 浏览
0 Comments

与Asp.net Web API相关的身份验证和授权的疑问

我需要开始一个新的项目,使用MVC 4和Web API进行开发。我之前有MVC 4的经验,但是对于Web API,这将是我的第一个项目。我理解Web API是用来被不同平台消费的。

我有几个与Web API相关的顾虑。我将它们列举如下,请大家帮我解答:

1)我的第一个顾虑与用户认证相关。我查看了这个 Stack Overflow 的问题,并且按照选定答案中提供的link1link2进行了尝试。但我仍然有几个问题:

a) 当我们通过表单认证进行用户认证时,我们会创建一个cookie来追踪用户是否已被认证,但是在Web API中,我们不会存储cookie,而是用户凭证通过内容头传递。我不明白在这种情况下如何跟踪用户的登录状态?

b) 我另一个担心是限制未经授权的访问,我认为我可以在上述提供的link1和link2中找到答案,如果我没有理解错的话。

c) 我也看了同一个Stack Overflow问题中Edward Brey的回答,但我没有完全理解这个想法。

2)我的第二个疑问是关于混合使用表单认证和基本Http认证。是否可以在登录时使用表单认证,然后在使用Web API时使用基本Http认证?如果可以,请指导我。

我的问题可能听起来不太合适,请大家谅解。

0
0 Comments

身份验证和授权相关的疑问与asp.net web api相关问题的出现原因以及解决方法

在使用Restful API时,由于其无状态性质,所以无法跟踪用户的登录状态,而是需要为每个请求发送经过验证的凭据。要实现这一点,可以使用授权过滤器来实现。

在上面的讨论中,提到了一种简单的逻辑来在执行API中的任何方法之前对用户进行授权。可以在控制器中的每个方法执行之前调用EnsureAuthenticated方法,或者将该逻辑放在授权过滤器中。

在Restful API中,每次调用都可以是一个新实例,并且可以在所做的每个API请求中传递凭据。

可以使用登录来为客户端生成身份验证令牌,并将其附加到Web API请求中。

对于第二个问题,通过表单身份验证完成后,传递用户凭据给Web API的最佳方式是什么?或者你有其他的替代方式可以建议吗?

可以使用用户名和密码的组合生成一个哈希值作为身份验证令牌,然后将其发送到Web API。不建议在每个请求中传递凭据,因此最好以其他方式生成令牌。

关于将令牌存储在会话变量中的问题,可以使用类似于Session["token"]={encrypted token}的方式来存储令牌。但是是否将令牌存储在会话中,取决于具体的情况和安全要求。

0