从客户端应用程序提供对API的访问令牌

时间:2019-07-05 20:05:26

标签: spring spring-boot oauth oauth-2.0 spring-security-oauth2

我有一个网站想要与OAuth2 / OpenID集成。首先要做的是设置一个身份提供程序,它将发出访问令牌。

该网站将有多个SpringBoot应用程序,但是在基本情况下,我将有一个应用程序提供静态文件,而另一个应用程序提供REST API。我们可以轻松设置带有注释@EnableOAuth2Sso的OAuth2客户端,以使用Authorization Code Flow协商身份验证。它将保护对静态文件的访问(这是一项要求),并将为以下请求提供访问令牌。

静态文件是单页应用程序,它将向API发出请求。该API可以使用注释@EnableResourceServer轻松创建,并将在其他SpringBoot上下文中运行。它甚至可以在不同的域中(为此我们将需要CORS),但是这里的要点是不共享Spring会话。

我们需要以某种方式使用先前收到的访问令牌向API发出请求。我们可以使用Cookie将其发送到浏览器,SPA会使用该信息填充Authorization标头。

即使这是安全的,我也不知道!除此之外,主要缺点是当访问令牌过期时,它将不会被更新,并且将无法访问API。

替代方法是在SPA中实现隐式流。但是这里我们无法保护静态文件,因为它需要访问它们才能执行身份验证。并且由于当前的实现,最好将身份验证详细信息保留在服务器端。

0 个答案:

没有答案