OAuth2 / OIDC我应该使用哪个流程

时间:2016-07-21 14:16:03

标签: oauth-2.0 openid-connect

我有一个用于身份验证和授权的OIDC服务器设置。我还有一个桌面应用程序,它本质上是一个带有一些额外功能的浏览器。

应用程序直接调用API服务器,嵌入式浏览器访问Web应用程序,该应用程序也向同一API服务器发出请求。每次执行应用程序时,用户都需要登录一次。

我应该使用混合流吗?可以在应用和网络应用之间共享令牌吗?

我还想知道Facebook移动应用如何通过其原生部分和网络视图部分进行身份验证。

编辑:Web应用程序是服务器端MVC应用程序

1 个答案:

答案 0 :(得分:1)

如果Web应用程序是SPA,因此是public client,那么您只需使用隐式授权类型,并将访问和ID令牌从嵌入式浏览器传递到本机应用程序。

但假设Web应用程序是服务器端应用程序,因此是机密客户端,那么您很可能希望使用authorization_code流作为基础,因为如果需要在服务器上并且您可以访问refresh_token可以依赖授权提供商的TLS证书来获取信任。

现在,您可以选择是将访问令牌从服务器渲染回前端,还是按照您的说法使用混合流。后者允许您已经将ID令牌和访问令牌传递给本机应用程序,而无需等待对令牌端点的后端调用和页面刷新完成。

但是,在处理令牌客户端时must verify the ID Token signaturematch the access token to it via at_hash,因为在这种情况下您不能依赖令牌端点的TLS证书。