谁负责创建登录表单以获取 accessToken?授权服务器还是 Angular? [关闭]

Posted

技术标签:

【中文标题】谁负责创建登录表单以获取 accessToken?授权服务器还是 Angular? [关闭]【英文标题】:Who is responsible to create login form to get accessToken? Authorization server or Angular? [closed] 【发布时间】:2020-09-06 08:27:57 【问题描述】:

我最近在学习 OAuth2。基本上我使用的是 Angular 客户端和后端 Spring Boot Rest API。

我对登录表单有点困惑。

通常当我们使用 Facebook 或 Google Rest API 等 3rd 方 REST Api 时,这些 API 使用身份验证代码流,这些 REST API 为客户端提供登录表单,一旦用户授权,则只有他们可以访问资源。

在我的应用程序中,我没有使用任何第 3 方 Rest api,而是创建授权/资源服务器并且我正在使用身份验证代码流。因此,如果 Angular 客户端对后端资源服务器进行休息调用,授权服务器是否应该显示登录表单? (就像 FB 或 Google 授权服务器一样)

Orelse 客户端将使用 Angular 创建一个登录页面,一旦他们登录,那么应该只发生身份验证代码流?

    简而言之,我的查询是:谁负责创建登录表单以获取 accessToken?授权服务器还是 Angular?

    如果我的资源服务器 Rest API 使用另一个 3rd 方 REST API(比如 Facebook 或 google)。那我应该去验证代码流还是客户端凭据流?

编辑:

我已经看到了许多 Spring Boot 和 Angular 组合的示例,在这些示例中,登录表单仅从 Angular 创建。

【问题讨论】:

你为什么在这里打开第二个问题Does Authorization server has to create login form?? 【参考方案1】:

它应该是 授权服务器 的一部分,用于将您路由到他们的登录表单,并且在成功的用户登录后,应该返回带有 auth token(jwt 令牌)的 Angular 应用程序您可以使用它来授权 api 调用。

【讨论】:

我已经看到了很多 Spring Boot 和 Angular 组合的示例,在这些示例中,登录表单仅从 Angular 创建...... 在这种情况下,出于安全考虑,不建议这样做,因为您需要将登录凭据(用户的用户名和密码)从 Angular(登录表单页面)传递到授权服务器以进行验证和生成令牌。但是,如果您的授权服务器不提供登录表单(可能是组织内部应用程序的情况),您可以创建一个登录表单页面并针对您希望使用的授权服务器获取用户验证。【参考方案2】:

谁负责创建登录表单以获取 accessToken?授权服务器还是 Angular?

您需要从授权服务器(Spring Boot API Server)生成一个令牌

如果我的资源服务器 Rest API 使用另一个 3rd 方 REST API(比如 Facebook 或 google)。那我应该去验证代码流还是客户端凭据流?

这将是身份验证代码流,但您需要管理用于身份验证的 URL 模式。

【讨论】:

以上是关于谁负责创建登录表单以获取 accessToken?授权服务器还是 Angular? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何获取accessToken

oauth2认证后返回#怎么获取accesstoken?

使用 accesstoken 登录 Facebook

PHP 仅以登录形式从 MySQL DB 中获取最后一行

Firebase + Typescript,无法从用户对象中获取 accessToken?

在 auth0 中获取 accessToken