2

我有一个 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,但这似乎有异味。

我确定我在这里遗漏了一些明显的东西,因此发布了这篇文章。

4

1 回答 1

1

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

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

于 2012-12-22T01:29:26.477 回答