我自己最近一直在研究这个问题,我希望我能说我有一个简单的答案,但我没有。我必须首先提出这样的问题:这是一个 Web 应用程序(JSP 等)还是一个 Web 应用程序使用的 REST API,还是一个移动应用程序使用的 REST API,等等。
这很重要的原因是,您首先必须选择 OAuth2 配置文件和授权类型之一,并且它们在 Spring 中都有不同的要求和配置。
此外,您是否正在尝试与第三方 OAuth2 身份验证提供程序(例如 Facebook)集成,或者您的应用程序是否同时充当身份验证提供程序(发生登录和密码验证)和受保护资源(网页请求或 API 调用所在的位置)到)?
所以我想我能做的最好的就是给你布置一些作业:
(1) 阅读各种 OAuth2 配置文件并确定哪一个最适合您的应用程序,并学习所有术语(例如,什么是客户端密钥?)。
这绝对不是您可以在不理解示例代码的情况下剪切和粘贴示例代码的情况之一。如果您对 OAuth2 的工作原理没有合理的理解,您将会遇到很多困难。
另外:我们在这里讨论的是安全性,因此在不了解安全性的情况下做事是一个非常糟糕的主意。如果你不小心,你可能会认为它有效,但实际上你很容易受到攻击。
(2) 如果您不熟悉 Spring Framework Security,您需要有基本的基础才能理解您在做什么。
(3) 一旦您知道要使用哪个配置文件,请在谷歌搜索中使用它,例如“Spring oauth2 隐式授权”可以找到为该配置文件量身定制的示例。
有一些例子,这是一个很好的起点,尽管我发现我无法将任何示例直接应用到我的应用程序中,因为它们的假设和我的应用程序之间存在细微的差异。
Spring 参考指南也很有帮助,但不一定提供您可能遇到的所有问题的所有详细信息。最后,尝试在您的应用程序中实现。
您需要一些好的工具来向您的应用程序发送请求(我喜欢 PostMan 用于此目的),以便您可以检查来回的数据。 OAuth2 涉及一系列复杂的 HTTP 重定向,因此测试可能有点困难。
另外,要有耐心。我认为自己是 Spring 专家,但我仍然花了几天时间才让事情完全按照我想要的方式工作。请注意,实际上您最终编写的代码非常少,但让少量代码完全正确是很困难的。