直接使用 API 从我的 Keycloak 前端发出用户注册请求
Make user registration requests from my frontend in Keycloak using its API directly
在我的 Angular 应用程序(前端)中,用户可以按以下方式登录:
- 用户将填写登录表单(
username
或 email
/ password
)。
- 用户将点击
Login
并点击此端点:http://localhost:8080/auth/realms/REALM_NAME/protocol/openid-connect/token
- 用户将在
JWT format
中得到答案,并将获得他的 access_token
(jwt 令牌),refresh_token
...等
- 现在这个令牌将用于访问我的后端 APIs,后者将根据 JWKs_URI(使用加密 RSA256)检查此令牌签名的有效性。
现在的问题是:如何以同样的方式启用用户注册,这意味着,我希望用户可以:
- 填写注册表
- 输入他的
email
、password
、password confirmation
、更多信息(可能是属性)
- 然后用户将点击
Register
,它将到达 Keycloak
中的一个端点(可能 /register
),这将 return 一些关于此成功的答案注册。
顺便说一句:我不想使用用户管理API。
您可以使用 Keycloak Admin REST API 注册新用户。切记不要粗心暴露。
关于你的问题,涉及到身份验证,你可以注册一个Keycloak OIDC客户端。 OIDC 提供了一个 bunch of resources 您可以使用。
如果您将应用程序注册为使用 OIDC 的 Keycloak 客户端直接授权。基本上“直接授予”意味着您只需从 POST 到 /realms/{realm-name}/protocol/openid-connect/token
.
即可获得访问令牌
关于直接授权的文档分散在 Keycloak 文档中,一些细节只能在 OIDC RFC 中找到;所以我找到了你 this page that ties everything together.
再次小心!这可能很明显,但不要将您的 Angular 应用程序变成 OIDC 客户端,否则黑客会窃取您的 Keycloak 客户端的凭据。确保让您的 Angular 应用程序调用某个服务器,您将在其中实施必要的安全机制来阻止滥用您的客户端(例如使用验证码)。
在我的 Angular 应用程序(前端)中,用户可以按以下方式登录:
- 用户将填写登录表单(
username
或email
/password
)。 - 用户将点击
Login
并点击此端点:http://localhost:8080/auth/realms/REALM_NAME/protocol/openid-connect/token - 用户将在
JWT format
中得到答案,并将获得他的access_token
(jwt 令牌),refresh_token
...等 - 现在这个令牌将用于访问我的后端 APIs,后者将根据 JWKs_URI(使用加密 RSA256)检查此令牌签名的有效性。
现在的问题是:如何以同样的方式启用用户注册,这意味着,我希望用户可以:
- 填写注册表
- 输入他的
email
、password
、password confirmation
、更多信息(可能是属性) - 然后用户将点击
Register
,它将到达Keycloak
中的一个端点(可能/register
),这将 return 一些关于此成功的答案注册。
顺便说一句:我不想使用用户管理API。
您可以使用 Keycloak Admin REST API 注册新用户。切记不要粗心暴露。
关于你的问题,涉及到身份验证,你可以注册一个Keycloak OIDC客户端。 OIDC 提供了一个 bunch of resources 您可以使用。
如果您将应用程序注册为使用 OIDC 的 Keycloak 客户端直接授权。基本上“直接授予”意味着您只需从 POST 到 /realms/{realm-name}/protocol/openid-connect/token
.
关于直接授权的文档分散在 Keycloak 文档中,一些细节只能在 OIDC RFC 中找到;所以我找到了你 this page that ties everything together.
再次小心!这可能很明显,但不要将您的 Angular 应用程序变成 OIDC 客户端,否则黑客会窃取您的 Keycloak 客户端的凭据。确保让您的 Angular 应用程序调用某个服务器,您将在其中实施必要的安全机制来阻止滥用您的客户端(例如使用验证码)。