2013-07-27 44 views
0

我有REST API并使其更安全我想限制只能访问已注册的应用程序或网站。如何使REST API被注册的应用程序使用

现在,这些客户端应用程序可以在Web应用程序或移动应用的Android/Windows的/黑莓/苹果等

我也不能要求客户端应用程序修改有代码来存储任何由我提供剩下的API来注册。 (因为这些应用程序可能会或可能不会使用数据库或其他持久性媒体)。

WCF REST API不应该注意到调用者是否注册了它。

任何建议如何做到这一点。

+0

您使用哪个框架来实现您当前的REST API? –

+0

我正在使用WCF Web API –

+0

您可能会发现这很有用然后:http://stackoverflow.com/questions/16830243/asp-net-combining-forms-authentication-and-basic-authentication –

回答

1

使用HTTP基本身份验证(只要您的REST服务在HTTPS下运行)是一种非常标准的方法。然后,您为每个要访问API的已注册应用程序生成一个登录名/密码。

[编辑:更多的细节在这里:http://en.wikipedia.org/wiki/Basic_access_authentication

基本上当一个客户端连接,他们需要Base64编码,他们的用户名/密码,并将其连接到标准的HTTP Authorization头。您的服务器应用程序将读取标题,解码并提取用户名/密码,并使用您的授权应用程序列表对其进行检查。

注 - 头只有base64编码,所以用户名/密码实际上是纯文本。你真的应该运行HTTPS,如果你想使用这种身份验证方法,否则头是开放的拦截]

+0

即使其余服务正在运行在HTTPS下,但我们的移动应用程序需要将它传递到标题中,并且要做到这一点,用户名/密码需要存储在软件包中....这可以反编译并受到安全威胁..... –

+0

如果您正在分发需要访问该服务的应用程序,无论您使用何种身份验证/授权机制,它仍然可以被黑客入侵。话虽如此,许多Web应用程序需要两个级别的身份验证 - 一个是应用程序密钥,一个是每个用户的唯一用户名。您可以将它们组合成单个传递密钥,或者通过REST调用传递用户名/密码/应用程序组合并返回随后调用所需的唯一凭单。 –

相关问题