当前位置: 首页 > 知识库问答 >
问题:

授权服务器,Oau2和aust0

姚实
2023-03-14

现在,我了解了访问令牌和刷新令牌,但我不知道如何实现它。

我有一个项目,前端是棱角分明的,后端是node.js的,前面有微服务架构和网关。我可以使用像oaust2授权服务器一样的aust0,用户存储在里面?

怎么做?在aust0文档中有大量的说明,我不明白哪个适合我。

我必须通过网关拦截登录、注销和注册,并重定向到auth0,或者我必须在我的用户微服务内部完成这些操作?

在我的项目中,还有个人信息表和公司表,用户表有意义吗?

这样是否是我公司所有项目的授权服务器sso?

我可以添加外部公司的SSO吗?

我可以添加Google登录吗?

共有2个答案

孟振
2023-03-14

对于特定的组织案例,您有一个非常广泛的架构实现问题。

我建议你遵循下面的用户管理模型,它使用NodeJS Koa Passport组合来处理简单的认证、注册和用户管理API。

您可以将 API 部署到 Heroku 并使用 Postman 测试 API。

您可以使用 NodeJS 全局错误处理程序中间件,而不必实现任何冗余本地错误处理程序。

作为最佳实践,在允许访问API之前,使用节点JWT中间件检查从客户端的超文本传输协议请求中接收到的JWT令牌是否有效,如果令牌无效,则向客户端发送“401未授权”响应。此JWT API授权可以在您的微服务之前在您的网关级别完成。

最后,Koa Pasport用户服务包含用于用户身份验证的核心业务逻辑,并在节点api中使用Koa-Redis进行会话管理,它封装了与猫鼬用户模型的所有交互,并公开了一组用户控制器使用的简单方法

任何Koa护照都支持使用OpenID和OAuth进行单点登录,这回答了您与SSO相关的其他问题。

在这里,您也可以发现KOA最适合微服务,因为您已经选择了相同的微服务。使用相同的基础架构覆盖身份验证用户管理将被证明是非常通用和可扩展的。

https://mherman.org/blog/user-authentication-with-passport-and-koa/

为了连接到外部SSO提供程序,您可以使用nodejs oauth2客户端api,如下所示,它允许您将节点后端连接到外部的SSO服务器。

https://www.npmjs.com/package/client-oauth2

对于使用Google/Gail的SSO,最好使用Google提供的基于SAML的SSO。

安全声明标记语言(SAML)是一个基于XML的框架,用于在两个实体(服务提供商和身份提供商)之间进行身份验证和授权。服务提供商同意信任身份提供商来认证用户。作为回报,身份提供者生成一个身份验证声明,表明用户已经过身份验证。

SAML是标准的单点登录(SSO)格式。通过数字签名的XML文档交换身份验证信息。它是一个复杂的单点登录(SSO)实现,支持无缝身份验证,主要是在企业和企业之间。

下面的链接提供了如何从应用程序将SAML/SSO服务设置到google的详细信息。

https://support.google.com/a/answer/6087519?hl=en

施学
2023-03-14

您可以遵循Auth0 Angular Quickstarts来实现您的场景。它确切地显示了一步一步的实现。https://auth0.com/docs/quickstart/spa/angular2/01-login

从架构层面来看,您正在执行以下操作:

    < li >前端应用(angular)使用auth0-spa-js实现授权代码流PKCE实现登录流。它只是执行用户身份验证,并获得一个请求API作用域的令牌。要请求API权限,请在启动登录流时添加受众参数。 < li >获得令牌后,访问令牌可用于调用您的后端API。 < li >在后端服务器中,您应该实现API授权(它验证访问令牌和检查令牌是否具有必要的范围/权限)。https://auth 0 . com/docs/quick start/back end/nodejs/01-授权

以上API authorizationo quickstart使用express中间件。这篇博客文章解释了如何在考拉做同样的事情。https://auth0.com/blog/building-and-securing-a-koa-and-angular2-app-with-jwt/

 类似资料:
  • 我在下面设置Spring配置: 和Maven设置如下:

  • 我们有一个连接到Exchange服务器的MVC应用程序。我们使用以下代码连接到本地服务器以创建服务: 这很好,但现在我们的IT部门正在将Exchange服务器迁移到云上,一些用户在云服务器上,而另一些用户在本地。所以我把代码改成: 我正在使用服务号进行自动发现(由于某种原因,它不适用于常规帐户),然后我正在将服务的凭据更改为登录的用户,因此他可以访问收件箱。问题是,随机地,服务器返回“请求失败。远

  • 我目前正在学习OAuth 2.0和OpenID Connect,我对授权服务器和访问令牌有疑问。规范将授权服务器定义为: 服务器在成功验证资源所有者并获得授权后向客户端发放访问令牌。 因此,据我所知,客户端将用户重定向到授权服务器,用户在授权服务器上进行身份验证,授权服务器向客户端发出访问令牌。 现在有一件事发生了,直到现在我才明白。有两种可能的方法来理解这一点,我正在努力找到正确的方法: > 授

  • 我有以下场景:一个客户端应用程序试图访问API网关后面的APIendpoint。我想验证(使用id和秘密)应用程序,如果它是应用程序A允许它访问endpoint/信用,如果它是应用程序B允许它访问endpoint/借方。 我假设API网关应该验证一个调用是否应该被拒绝。你能告诉我我的工作流应该是什么样子,我应该使用什么Keycloak功能吗?

  • 我需要了解在我的项目范围内使用autheorizaion服务器的便利性。 我们正在实现我们的服务并将其部署到客户环境中。 客户基础结构已经提供了一种身份验证机制,以便对用户进行身份验证。 此机制拦截所有通信并将用户重定向到“登录”表单。 之后,用户被重定向到我们的服务,我们必须处理和消化它,并使用JWT令牌进行响应。 这是我感到迷茫的地方: 我在想: 使用Spring oauth2 向授权服务器请

  • 我有几个问题。 使用授权代码流时,我是否需要在客户端验证随机数?在一般的OAuth提供程序实现中,从授权代码获取访问令牌的过程只工作一次。由此看来,授权码流在不使用随机数的情况下,已经支持重放攻击了? 在web应用程序中使用授权代码流有什么好处?ID令牌是一种身份验证机制,而不是授权机制,据我所知,它用于验证哪个OpenID提供者正在为哪个中继方验证哪个用户。 但在授权代码流中, OAuth 2.