繁体   English   中英

身份验证:自定义或第三方

[英]Authentication: Custom or Third Party

我正在Ruby on Rails中创建一个应用程序,并研究了Devise,Omniauth,并创建了自己的自定义版本。

我的问题是:您将在哪种情况下使用以上三种选择之一?

我的看法:-Omniauth可以通过第三方API提供快速注册,但是需要额外的权限才能访问其他数据-Devise提供了核心功能,也可以根据应用程序的需求进行自定义-自定义可能适用于极端情况,目前,我不需要

**我倾向于Devise,因为它提供了核心,并允许我添加到其中

其他注意事项:-我的应用程序需要登录并访问以下基本信息:位置,语言I18n等-我的应用程序还进行金融交易(如果您是付费会员等)。

回到我的问题:基于以上所述,Devise似乎是更好的选择吗? Omniauth是否提供这些功能? 我什么时候应该使用另一个?

谢谢

Devise和Omniauth做的事情非常不同-它们经常一起使用。

Devise提供了具有视图,控制器和路由的完整身份验证包,以允许用户注册,编辑用户配置文件,重置密码等。无需数据库身份验证模块通过电子邮件密码进行注册,就可以使用Devise。

Omniauth是用于通过Oauth进行身份验证用户的框架。 与Devise不同,Omniauth不附带任何视图或控制器。 相反,您需要将Oauth回调集成到您的应用中。 Omniauth所做的是抽象出不同提供程序之间的差异。

两者都可以一起使用,以通过例如密码或oauth提供用户身份验证。

通常不建议使用自己的身份验证解决方案 像Devise这样的项目有数百甚至不是数千个工时,而且很多人在查看代码库中的缺陷。 Syndrom是最常见的安全故障之一,它导致用户数据和密码泄漏,这是最常见的安全故障之一。

要将上下文添加到@max的答案中,OmniAuth是OAuth(开放式授权)的提取...

OAuth是一种发布受保护数据并与之交互的简单方法。 这也是人们向您提供访问权限的一种更安全,更安全的方式。 我们一直很简单,以节省您的时间。

每当您拥有FacebookTwitterLinkedInGitHubNetFlix受信任的服务,并希望将这些服务与这些现有服务上的预构建连接功能结合使用时,您将需要一种安全的方式来“授权”该数据的使用...

  • 一个“ CRM”系统,允许您从LinkedIn “导入”联系人
  • 一个“社交发件人”系统,允许您将消息发送给您的Facebook朋友
  • 根据您最近在NetFlix上观看的内容推荐新电影

大多数人通过Facebook等的“允许访问”通知了解OAuth

在此处输入图片说明

在您自己的应用中解释这一点很简单-您是否要从Facebook / Twitter / LinkedIn / GitHub等提取数据?

OAuth的真正用途应该是扩展您的应用程序。

在此处输入图片说明

大多数用户将其社交网络数据的“应用程序请求”视为“社交”体验的扩展(即,如果我允许app访问我的FB ,我希望它可以发布到我的墙等)。

与其将其视为允许用户使用Twitter / Facebook / LinkedIn凭据(100%有效)登录的方式,不如考虑更高级别的功能。

-

设计!= OmniAuth

Devise是一个认证系统; OAuth是授权

OmniAuth扩展了OAuth的身份验证功能:

OmniAuth是一个库,用于标准化Web应用程序的多提供商身份验证。

它用Twitter API key替换email / password 因此,只要你的系统上创建的认证,你将永远需要存储User数据等-这是这些数据是如何认证,这使得差别。

简而言之, 如果您想Sign in with Twitter按钮等Sign in with Twitter建议使用OmniAuth 但是,为了保持身份验证的一致性, 最好将Devise OmniAuth结合使用

-

最后, 除非您已实施Devise至少5次, 否则请不要进行自己的身份验证。 所有Rails身份验证的工作方式相似(使用Warden策略 )。 Devise有100,000个用户为您工作时,调试您自己的系统将不值得您花时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM