OAuth2:从隐式流中提取access_token片段

时间:2017-08-30 11:17:39

标签: angular oauth-2.0

我不太清楚如何处理oauth2隐式流量响应。我使用angular4创建了一个SPA。到目前为止我能够得到我需要创建一个请求:

GET /authorize?
  response_type=token&
  client_id=s6BhdRkqt3&
  state=xyz&
  redirect_uri=<<uri-located-into-SPA>>

我不太了解的是如何处理响应。响应是重定向到先前指定的redirect_uri查询参数。

HTTP/1.1 302 Found
Location: <<uri-located-into-SPA>>#access_token=2YotnFZFEjr1zCsicMWpAA&
    state=xyz&
    token_type=example&
    expires_in=3600

那么,我应该如何实施<<uri-located-into-SPA>>以提取access_token以及&lt;&gt;我需要设置吗?

1 个答案:

答案 0 :(得分:1)

重定向URI(例如/auth/oauth2)应该映射到当前浏览器URL parse the hash part的组件,在某处保存access_token值(sessionStorage,localStorage或某些角度服务或商店)。如果您想要发送访问令牌以及每个后端请求,请创建一个HttpInterceptor(来自新的Angular HttpClient API),将其添加到那里。

如果要在访问令牌过期之前刷新,则还应设置刷新访问令牌的超时功能(使用隐藏的iframeprompt=none URL参数)。

该组件不需要任何真实视图。处理完成后,只需将路由更改为某个现有应用程序组件 - 初始视图或在身份验证之前请求的视图。