1

在我的 Angular 应用程序(前端)中,用户可以按以下方式登录:

  • 用户将填写登录表单(usernameemail/ password)。
  • 用户将点击Login,这将点击此端点:http://localhost:8080/auth/realms/REALM_NAME/protocol/openid-connect/token
  • 用户将得到答案JWT format并获得他的access_token(jwt 令牌),refresh_token......等等。
  • 现在,此令牌将用于访问我的后端 API,这些 API 将根据 JWKs_URI(使用加密 RSA256)检查此令牌签名的有效性。

现在的问题是:如何以相同的方式启用用户注册,这意味着,我希望用户能够:

  • 填写注册表
  • 输入他的email, password, password confirmation, 更多信息(可能是属性)
  • 然后,用户将单击它,它会到达(可能)中Register的一个端点,该端点将返回有关此注册成功的一些答案。Keycloak/register

顺便说一句:我不想使用用户管理 API。

4

1 回答 1

3

您可以使用 Keycloak Admin REST API来注册新用户。确保不要不小心暴露它。

关于您的问题,与身份验证有关,您可以注册一个 Keycloak OIDC 客户端。OIDC 提供了大量可供您使用的资源。

如果您将应用程序注册为使用 OIDC直接授权的 Keycloak 客户端。基本上,“直接授予”意味着您只需一个简单的 POST 即可获得访问令牌/realms/{realm-name}/protocol/openid-connect/token

关于直接授权的文档分散在 Keycloak 文档中,一些细节只能在 OIDC RFC 中找到;所以我找到了这个将所有内容联系在一起的页面

再次小心!这可能很明显,但不要将您的 Angular 应用程序变成 OIDC 客户端,否则黑客会窃取您的 Keycloak 客户端的凭据。确保让您的 Angular 应用程序调用某个服务器,在那里您将实施必要的安全机制来阻止滥用您的客户端(例如使用 CAPTCHA)。

于 2020-09-14T07:29:34.233 回答