OpenID + OAuth for Web App和桌面/移动应用程序身份验证和授权

时间:2011-05-20 17:32:24

标签: asp.net security oauth openid

我想使用OpenID来验证我的webapp上的用户 - 类似于StackExchange的做法。我还想让我的网站用户使用同一帐户使用我的桌面和移动应用程序。我读过这个需要OAuth(OpenID纯粹只是网站)。

我不知道的是

  • 这是正确的方法吗?
  • 这个工作流程是什么?
  • 每个用户/ OpenID在我的数据库中需要哪些数据?我是否存储“帐户”,然后当他们使用OpenID进行身份验证时,我允许他们为移动应用生成OAuth令牌?

在一个理想的世界中,我可以为我的WebApp以及我的桌面和移动应用程序提供与https://stackoverflow.com/users/login类似的按钮,这些按钮只允许用户使用他们的google或facebook帐户登录,那可能吗?用户的简单性是至关重要的,因为我的用户群不会带来任何远程复杂的东西。

我可以使用像DotNetOpenAuth这样的东西来提供所有这些功能吗?

更好的解决方案是解决这个问题并允许用户使用OpenID对我的网站进行身份验证,然后为桌面和移动客户端提供自己的OAuth方案吗?

3 个答案:

答案 0 :(得分:1)

最简单的机制可能是嵌入一个Web视图,只需观察导航到特定的回调页面并以这种方式获取身份验证数据。您仍然可以使用OpenID。

答案 1 :(得分:0)

您应该关注的是Windows Identity Framework(WIF),它对于使用基于声明的身份的Web或桌面应用程序的工作方式类似。您将为每个用户存储授权令牌(以及您需要的任何其他信息),并且您将在经过身份验证的HTTP请求的授权标头中获取该授权令牌。 oAuth是传递授权请求和响应的协议。 WIF是一个.NET工具包,用于简化此交互。

有关详细信息,请查看WIF主页和以下博客(不是我的):

http://msdn.microsoft.com/en-us/security/aa570351

http://blogs.msdn.com/b/vbertocci/

答案 2 :(得分:0)

这是我想出的工作流程,到目前为止我认为它运作良好。

用户需要通过第三方OpenID / Facebook /等对网站进行身份验证(可以使用移动设备友好的网站)。然后,在他们的“配置文件”中,他们可以生成API“密钥”,他们可以将其复制/粘贴到他们的客户端软件中。它不是100%透明的用户,但它非常好。