我有一个网站利用mvc和web api控制器和aspnet身份.我使用VS2013 SPA模板将mvc和web api控制器作为起点.
这是我的场景:
用户使用mvc控制器登录并获取auth cookie.
使用经过身份验证的mvc控制器提供下一页.该页面使用knockout并对一个web api控制器进行ajax调用,该控制器通过单击按钮进行身份验证(保存).web api控制器需要带有Bearer --token--的Authentication头.
我的问题是其他人如何处理这种"两种"认证方法.我在经过身份验证的mvc控制器上创建了一个端点,并根据当前主体返回一个承载令牌.我可以使用该令牌成功发布到Web api端点.
我正在创建的javascript逻辑有点令人困惑.它检查访问令牌是否在会话存储中,如果是,则进行ajax调用.如果没有,请调用get token端点,然后调用web api端点(使用一堆回调来处理Ajax承诺,失败,等等).
其他人如何处理您需要auth cookie和bearer token的场景,以便对每个"mvc"页面进行身份验证,并对页面调用的web api端点进行身份验证.如果持票人令牌在cookie到期之前到期,您该怎么办?
如果我不清楚或者您是否需要更多信息,请告诉我.
编辑
我遇到了这个问题,一起使用bearer令牌和cookie身份验证 它仍然没有回答我的问题,因为我已经设置好了所以mvc接受cookie auth而web api只接受bearer token.我觉得这应该是一个已经解决的问题,但也许我采取了错误的方法.
我一直在对 Web api 上的身份验证和授权进行一些研究。我了解身份验证(用户名/密码)和基于角色的授权,但我感到困惑的是数据授权。
假设您有一个经过身份验证的用户(用户 ID 1),是一名管理员,并且与公司 ABC 关联。我有其他与 ABC 关联的用户,其用户 ID 1 可以更新。现在我想更新与 ABC 关联的用户 id 2 的名称(我也应该有权访问)。我需要传递一些内容来识别用户 2,即放入 /user/2 加上发布数据。我知道在服务器端,用户 1 可以更新用户 2,因为他已经过身份验证并且是管理员。
现在我有与公司 XYZ 关联的用户 100。用户 100 不应该能够更新用户 2。这就是我很难找到相关信息的原因。
有哪些方法/博客/任何内容可以就如何防止用户 100 访问其公司外部的数据提供一些有用的想法。
我的想法是,我可以将登录的用户 ID(我根据身份验证获取服务器端)传递到更新存储过程中,并进行检查以确保用户 ID 与正在更新的用户关联。对我来说,这似乎乏味且丑陋,因为每个存储过程都需要一个用户 id 参数和检查以确保他们可以访问他们正在访问的数据(也许这是正确的)。
我知道如何进行身份验证以及如何检查基于角色的授权,缺少的部分是基于资源的授权。
谢谢您的帮助。
有没有人有任何见解。很难相信基于角色的授权就足够了。