我是 Vaadin 的新手(但到目前为止很喜欢它)。我正在使用 Vaadin 12,但对使用“大主”外部登录系统实现标准登录屏幕的“最佳方式”感到困惑,即:
- 用谷歌登录
- 使用 MS Azure 登录
- 使用领英账户登录
- 使用 Box 登录
(我不打算支持自定义注册/登录页面来询问用户他们的姓名和电子邮件等 - 这是浪费时间,因为用户可以从至少上述 4 个受支持的系统中进行选择,这样我就委托了整个用户名/密码管理系统到更大的系统等)
但是,在 Vaadin 12 中似乎没有预先构建像使用“大”外部提供程序(例如上述列表之一)的稳定/经过测试的登录系统这样简单的东西。(也没有任何我可以模仿的例子)。我发现最好的是https://vaadin.com/directory/component/oauth2-popup-add-on/overview,但这似乎只适用于 Vaadin 7(也许是 8)。从过去的问题来看,我的理解是 Vaadin 8 组件与 Vaadin 10/12/14 等不兼容。因此,如何使用外部提供(例如 MS Azure)安全(轻松)实现安全、简单的登录系统瓦丁12?
(注意:我确实找到了似乎适用于 Vaadin 10+ 的https://vaadin.com/directory/component/google-sign-in-component/overview,但它似乎只适用于 Google;这是否意味着我们需要通过查找是否有人为这些系统构建了聚合物 Web 组件然后将其集成到 Vaadin 中,为 MS Azure/LinkedIn 等定制构建类似的组件?即使答案是“是”,它看起来就像来自https://的示例:/ /vaadin.com/directory/component/google-sign-in-component/overview 是“危险的”(顺便说一句,我的网络知识和安全知识接近于零),因为它似乎暗示人们可以简单地使用“事件”类来检索用户的姓名/电子邮件等,但从技术上讲,该信息不应该不是来自前端(因为任何体面的黑客都可以直接调用 Vaadin 后端 servlet 并简单地“提供”用户名/电子邮件等),但只有访问令牌(或者它可能被称为其他东西——我' m 现在条款模糊),然后后端代码(并且只有后端代码)将使用此访问令牌重新调用外部提供者(例如谷歌),然后(并且只有那时)最终确定用户名/email 等(而且,由于后端是 java,我认为使用的“最佳”此类库是 scribe:https ://github.com/scribejava/scribejava/) (据推测,一旦最终确定了用户名/电子邮件,它就可以以某种方式保存为 Vaadin 中的会话变量,以便后续调用具有所需的信息?)(注意:作为一个额外的约束,我正在努力避免使用 Spring——我过去使用过它,它使我的代码复杂了十倍,并使调试和与非 Spring 示例代码集成成为一场轻微的噩梦……不过,我愿意使用 Java EE(即 javax 库)如果我必须/如果强烈建议这样做....)