oauth身份验证方式_使用OAuth和Passport管理身份验证

oauth身份验证方式

用户组列表和信息(UGLI)应用程序开始很好地成形。 现在,您可以通过在“ 具有响应式Web设计的MEAN和UGLI CRUD ”中设置的CRUD屏幕显示您创建的本地内容。 您还可以使用在“ MEAN遇见Meetup.com和微数据 ”中开发的服务来合并来自外部站点的内容。

与公众共享会议信息是该项目的重要组成部分。 但是,作为用户组组长,我也希望将某些活动限制为该组的注册成员。 例如,通过关闭匿名访问并要求登录,我可能会选择在评论我们的演示文稿时保留一些礼貌。 因此,在本期中,您将使用Meetup.com的OAuth服务为UGLI应用提供登录功能。 请参阅下载以获取示例代码。

创建一个新的用户帐号

通过单击Sign up按钮(如图1所示),您的应用程序用户可以创建一个新帐户,该帐户存储在本地MongoDB中。 此功能内置于您的应用中-无需其他编程。

图1. UGLI注册页面

从开发的角度来看,这种默认行为无疑是最简单的解决方案,但是就用户体验而言,它仍有一些不足之处。 您的用户组成员已经在Meetup.com上拥有一个帐户,用于RSVP即将举行的会议。 要求他们创建和维护一组重复的凭据不仅烦人,而且公然违反了“不要自己重复”(DRY)原则。

幸运的是,通过使用的MEAN堆栈,您可以设置使用OAuth和Passport的分布式身份验证和授权解决方案。 简单来说,您的用户可以使用用于登录Meetup.com的相同凭据登录(认证)到UGLI应用程序。 但是,如果没有用户的许可,这是无法完成的。 他们必须允许(授权)UGLI应用使用其Meetup.com凭据。

即使通过OAuth对UGLI应用进行了授权,用户凭据也不会与授权的应用共享。 您不会在UGLI中本地存储一组重复的用户名和密码。 希望获得授权的应用程序(UGLI)将用户重定向到OAuth提供程序(Meetup.com),他们在其中提供其凭据(用户名和密码)。 用户成功认证后,访问令牌将返回给授权的应用程序。

这种方案减少了应用程序中的大量代码和逻辑。 您不再需要担心在服务器上存储加密密码-这是OAuth提供程序要解决的问题。 同样,您不再必须编写算法来强制使用强密码或处理忘记的密码或强制用户定期更改其密码。

因此,OAuth为您的用户提供了更少的密码来记忆,并且为您提供了更少的编写代码。 如果这不是双赢方案的教科书定义,我不知道这是什么。

介绍OAuth和Passport

您不再需要编写算法来强制使用强密码,也不必处理忘记的密码,也不必强制用户定期更改密码。

OAuth是用于分布式身份验证和授权的开放标准。 它由Twitter和业务合作伙伴Ma.gnolia于2006年开发,旨在促进创建桌面小部件,这些小部件显示来自已验证服务的信息。 从那时起,OAuth被数百个主要网站采用,从Google到Facebook再到Twitter,GitHub,LinkedIn等。 (请参阅著名的OAuth服务提供商列表 。)

Passport是为Node.js编写的OAuth库。 具体来说,它是旨在与Express应用程序无缝集成的中间件。 有140多个Passport插件(称为策略 )可供使用,这些插件是为每个OAuth提供程序量身定制的。

如果您在文本编辑器中打开UGLI应用程序的package.json文件(如清单1所示),则可以看到针对四种主要服务(Facebook,Twitter,LinkedIn和Google)的Passport策略,以及用于直接存储凭据的本地策略。在MongoDB中。

清单1. package.json中的护照策略
"dependencies": {
    "passport": "~0.2.0",
    "passport-local": "~1.0.0",
    "passport-facebook": "~1.0.2",
    "passport-twitter": "~1.0.2",
    "passport-linkedin": "~0.1.3",
    "passport-google-oauth": "~0.1.5"
}

使用现有示例作为指南,您将添加第六种策略,以将Meetup.com纳入UGLI的OAuth提供程序。

安装Meetup.com Passport策略

你可能感兴趣的:(java,jwt,acl,软件测试,安全)