保护子域上的API - 使用OAuth提供程序登录的用户

时间:2012-12-20 18:14:31

标签: api asp.net-mvc-4 dotnetopenauth

我有一个MVC 4网站(http://myWebsite.com),它使用一些OAuth提供商(Google,Facebook,Twitter,MS Live)供用户登录 - 它使用DotNetOpenAuth库。

我在子域(http://api.myWebsite.com)上也有一个API。

当用户想要更新记录时,我需要检查他们是否有权(授权)更改记录。

所以问题是,如何最好地在子域上的API上授权用户?

到目前为止,我的想法包含以下内容:

我可以将用户的身份验证令牌添加到HTTP请求标头中的API,然后我相信我有两个选择。

i)我在网站上创建了一个方法,该方法负责查看所有用户权限并向其发送令牌并询问用户是否已获得授权。

ii)我将DotNetOpenAuth dll添加到API解决方案中,然后可以使用访问它们所需的角色简单地修饰API方法。这会有用吗?

第三种选择是将更新的记录发回网站并运行授权,然后如果它通过将数据发送到API,但这似乎闻到了。

我确信我错过了一些明显的东西,因此是帖子。

1 个答案:

答案 0 :(得分:1)

您的用户登录方式与您授权其他客户端调用API子域的方式完全正交。 只是在您的API上接受身份验证令牌 - 身份验证,被滥用作为授权,会带来很大的安全漏洞。

授权客户调用您的API需要授权协议,例如OAuth 1或2,DotNetOpenAuth都支持这两种授权协议。查看DNOA OAuthAuthorizationServer和OAuthResourceServer示例,开始向您的API添加OAuth 2支持。

相关问题