Rest,Spring 自己的 OAuth2 服务器 + OAuth2 提供商,如 Facebook、Google、Yahoo

2023-11-21

在 Spring Boot 应用程序中,我使用 Spring Security 和 Spring OAuth2 保护我的 Spring MVC REST 端点。我有自己的授权\资源服务器,因此为了与我们的 API 通信,客户端(AngularJS)需要从我的 API 授权服务器获取 accessToken。

一切正常,但为了在我的 API 上进行身份验证/授权,用户需要创建他的帐户并向我们提供他的用户名/密码。

我想简化这个过程,并建议用户通过 Google/Facebook/Twitter oAuth 提供商在我的 API 上进行身份验证。

现在我还不清楚它是如何工作的。例如我的想法之一 - Facebook 将发行自己的 accessToken 并将其传递回我的 API。基于此 accessToken,我的 API 将发出自己的 accessToken 并将其传递回客户端应用程序(AngularJS)。或者我应该将 Facebook accessToken 直接传递给客户端应用程序?

对于所描述的情况,正确的架构是什么?应该如何运作?

也许有一些例子可以演示这种基于 Spring 框架的架构?


如果您想将身份验证委托给外部提供商,您可以使用OAuth2ClientAuthenticationProcessingFilter,或者中提供的方便注释和外部配置春季云安全。示例(来自 Spring Cloud Security 主页):

应用程序.java:

@SpringBootApplication
@EnableOAuth2Sso
public class Application {
   ...
}

应用程序.yml:

spring:
  oauth2:
    client:
      clientId: bd1c0a783ccdd1c9b9e4
      clientSecret: 1a9030fbca47a5b2c28e92f19050bb77824b5ad1
      accessTokenUri: https://github.com/login/oauth/access_token
      userAuthorizationUri: https://github.com/login/oauth/authorize
      clientAuthenticationScheme: form
    resource:
      userInfoUri: https://api.github.com/user
      preferTokenInfo: false

如果你的应用程序在端口 8080 上运行(我相信),那么这适用于 github。类似的配置适用于 facebook、cloud foundry、google 和其他 OAuth2 提供商。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rest,Spring 自己的 OAuth2 服务器 + OAuth2 提供商,如 Facebook、Google、Yahoo 的相关文章

随机推荐

  • 如何在一个屏幕而不是整个应用程序中处理退出应用程序 - React Native?

    我有一些问题返回处理程序 问题是 运行应用程序并转到 注册 屏幕并触摸手机背面时 他们将运行该功能并显示警报进行确认 但现在当我转到任何其他屏幕并触摸背面时 他们将需要每次返回时就返回上一个屏幕 BackHandler exitApp 运行
  • 将断点保存到文件

    调试 Python 代码时 我从命令行通过 ipdb 运行脚本 并设置了多个断点 然后我对一个或多个模块进行一些更改 然后重新运行 但是 如果我只是使用运行模块不要重新加载 为了确保它们确实如此 我可以完全存在并重新启动Python 但随后
  • 如何获得英文的 boost::system::error_code::message ?

    在具有本地化 UI 的 Win7 上 error code message 返回非英语消息 据我所知 在 Boost 1 54 中 对于system error category 上面的函数归结为以下 WinAPI 调用 DWORD ret
  • 如何使用 ExecutorService 等待所有线程完成?

    我需要一次执行 4 个任务 如下所示 ExecutorService taskExecutor Executors newFixedThreadPool 4 while taskExecutor execute new MyTask wai
  • 如何在 macOS 或 OS X 上安装 pip?

    这个问题的答案是社区努力 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 昨天我花了一整天的时间寻找安装的明确答案pip Python 的包管理器 我找不到好的解决办法 我该如何安装它 在 Linux 或 MacOS 上 python
  • 在 Laravel Homestead 上使用 SSL

    我正在使用 Laravel Homestead 它运行良好 现在我想在我的一个网站上实施 HTTPS 我发现要实现这一点 你只需要添加ssl true进入 Homestead yaml 然后运行 vagrant reload provisi
  • 使用 pywin32 控制 Adob​​e Acrobat 时出现“未实现”异常

    我使用 pywin32 在 python 中编写了一个脚本 将 pdf 文件保存为文本 直到最近都工作正常 我在 Excel 中使用类似的方法 代码如下 def pdf2Txt self pdf fileformat com adobe a
  • 如何重写javascript中的eval函数?

    例如 function var proxied window eval window eval function return proxied apply this arguments 但这段代码不起作用 eval是魔法 与 真实 函数不同
  • 在 Jquery 中创建随机下落物体

    我试图让div从上到下下降 这是我尝试过的代码 但它不能满足我的需求 我想在准备好后生成 20 div 然后如何使该 20 div 持续从上到下一致地下降 在 jquery 中是否可以做到这一点 http jsfiddle net MzVF
  • Javamail 和 Gmail Pop3 SSL

    我正在尝试将我的应用程序连接到 Gmail 以检查电子邮件 我必须对 POP3 使用 SSL 这是我的代码 Properties props new Properties props put mail host pop gmail com
  • 检查是否连接到Wi-Fi网络C#

    有没有办法检查电脑是否连接到wifi网络 另外 如果已连接 我想要 SSID 可能的 检查互联网连接的部分在这里回答 C 检查互联网连接 SSID部分在这里回答 获取我在 Windows Vista 上使用 C Net 连接到的无线网络的
  • 使用 JQuery 计时器调用 js 函数

    无论如何 有没有办法为 JQuery 实现计时器 例如 每10秒需要调用一个js函数 我尝试了以下方法 window setTimeout function alert test 10000 但这只执行一次 然后就不会再执行了 你可以使用这
  • str.format() -> 如何左对齐

    gt gt gt print there are 0 10 students and 1 10 teachers format scnt tcnt there are 100 students and 20 teachers 输出的代码是什
  • Android - Retrofit 2 - 身份验证器结果

    我正在尝试使用 Retrofit 2 0 0 beta3 但是当使用身份验证器添加令牌时 我似乎无法从同步调用中获取数据 我们在后端的日志记录只显示了很多登录尝试 但我无法从正文中获取数据来实际添加到标头中 public static cl
  • Rails 和 MSSQL 2008 - 我们会遇到障碍吗?

    我工作的公司正在寻求将平台从 ColdFusion 8 Windows 切换到 Ruby on Rails Linux 我们的数据库解决方案将保留为 Windows 上的 MSSQL 2008 我可能会单独跟进与此迁移相关的一系列问题 但现
  • 无法识别的字体系列材质图标?

    我是 React Native 的新手 我已手动将react native vector icons 库添加到 Xcode 和 Android studio 中 如果使用 Xcode 运行代码 则可以成功执行 没有任何问题 但如果我尝试从终
  • Delphi 多线程消息循环

    我的应用程序有几个线程 1 主线程 2 2个子主线程 每个都有消息循环 如下所示 由TFQM使用 3 n个工作线程 简单循环 包含Sleep 我的问题是 当我关闭应用程序时 工作线程设法正确退出 但是当我发出 WM QUIT 关闭它们时 2
  • 访问 NSArray 的随机元素时的 EXC_ARITHMETIC

    我试图随机获取数组的值 但出现错误 到目前为止 这是我的代码 NSMutableArray validMoves NSMutableArray alloc init for int i 0 i lt 100 i validMoves rem
  • Workflow Foundation 4 中的依赖注入/IoC

    是否可以在您的工作流程活动中使用 DI 如果是 怎么办 例如 如果您有类似的活动 public sealed class MyActivity CodeActivity public MyClass Dependency get set p
  • Rest,Spring 自己的 OAuth2 服务器 + OAuth2 提供商,如 Facebook、Google、Yahoo

    在 Spring Boot 应用程序中 我使用 Spring Security 和 Spring OAuth2 保护我的 Spring MVC REST 端点 我有自己的授权 资源服务器 因此为了与我们的 API 通信 客户端 Angula