Web API身份验证技术


26

我们有一个asp.net MVC Web服务框架,用于为人们获取请求提供xml / json,但正在努力找出验证用户的最佳方法(对于使用javascript或OO语言进行编码的用户而言,快速,简便,琐碎)。这并不是说我们的数据是敏感数据或任何东西,我们只是希望用户注册,以便我们可以使用其电子邮件地址来通知他们更改和跟踪使用情况。

在我们先前的尝试中,我们在URI中使用了用户名,并且只需确保存在用户名并使用使用率来递增db表。这是超级基础,但我们会注意到人们使用demo作为用户名等,因此我们需要使其更加复杂。

有哪些身份验证技术可用?主要参与者使用/做什么。


您认为什么是“主要玩家”?请列举一些例子。当您使用它时,请包括指向“主要参与者” API定义的链接,以便我们可以看到它们的作用。
S.Lott

我认为twitter / facebook / google / flicker是主要参与者。 developers.facebook.com apiwiki.twitter.com
Steve,

Answers:


10

我在StackOverflow上问了这个问题,您可以在这里阅读。另请参阅对自己问题的回答。正是关于身份验证,而无需为每个请求传递密码,也无需SSL或加密。只是简单的哈希。


我不确定我是否喜欢您的解决方案。
史蒂夫

史蒂夫:使用Flickr解决方案

是否有开源的闪烁解决方案,还是我只需要阅读他们的api并弄清楚呢?
史蒂夫

阅读他们的API,这非常简单。如果您没有SSL,则不如我的方法安全,但是非常好

您的md5解决方案似乎与“对于javascript用户而言微不足道”不符。我将不得不进一步检查flickr API。我浏览了一下,但需要研究一些术语。主要是什么东西。
史蒂夫

3

该视频是一种在WCF / REST服务中使用API​​密钥的有趣方式。代码


这与将用户名放入服务中相同,只是他们将其称为api密钥。如果使用javascript,则有人可以查看页面的源代码,然后复制密钥,然后在其他位置使用它。您是否希望将api密钥链接到调用域,以便api密钥必须有效且必须来自xyz.com?
史蒂夫

这也是@KinGBin建议的副本吗?
史蒂夫

0

我把它当作Visual Studio使用。如果您将vs 2010与4.0框架一起使用,则可以在vs 2010中检出“带有API密钥验证的WCF REST服务”模板。


1
我将不得不调查。我个人想摆脱WCF。
史蒂夫

这很有趣,但是看起来它只是在查询字符串中传递了APIKey。这是否意味着即使在使用SSL的情况下,调用者和被调用者之间的任何人都可以看到API密钥?
JMarsch

0

我始终对Web服务使用HTTP身份验证。身份验证本身将由您的Web服务器处理,在您的情况下可能是IIS。然后,您将IIS配置为针对您的数据库,LDAP存储或类似服务器进行身份验证。

然后,您将通过属性User.Identity.Name访问用户名。

编辑:jQuery身份验证示例:

/* I found that providing the username and password both in the
   the arguments and in the url parameter seems to have better compatibility,
   if it works well for you, it is highly advisable to remove the 
   user/pass from the url */

function doLogin (){
  $.ajax({
    username: $('#username').val(),
    password: $('#password').val(),
    url: 'https://'+$('#username').val()+':'+$('#password').val()+'@api.example.com',
    dataType: 'jsonp',
    context: $('#result'),
    success: function(d) { $(this).html(d); $(location).attr('href','https://api.example.com/success'); }
    });
    return false;
}

您将如何使用javascript客户端执行此操作?
史蒂夫

客户端=新的XMLHttpRequest(); client.open(方法,URL,异步,用户,密码);
ewindisch 2011年

添加了jQuery示例来回答
ewindisch 2011年

1
因此,用户名密码组合必须以纯文本格式保存在源代码中。似乎不是一个好主意。
史蒂夫

1
好的,所以基本上您必须在登录屏幕中输入用户名/密码才能触发api请求?该解决方案是可怕的。每个公共网站用户都必须注册?
史蒂夫
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.