AI prompts
base on # <span>Keycloak</span> Quickstarts
<span>Keycloak</span> is an Open Source Identity and Access Management solution for modern Applications and Services.
The quickstarts herein provided demonstrate securing applications with <span>Keycloak</span> using different programming languages (and frameworks)
and how to extend the server capabilities through a set of Java-based [Service Provider Interfaces(SPI)](https://www.keycloak.org/docs/latest/server_development/).
They provide small, specific, working examples that can be used as a reference for your own project.
They are organized in this repository under different categories (or directories) as follows:
| Category | Description |
|-----------|---------------------------------------------------------------------------------------|
| extension | Examples about how to extend the server capabilities using some of the Keycloak SPIs. |
| jakarta | Examples about how secure Jakarta Applications |
| js | Examples about how to secure JavaScript Applications |
| nodejs | Examples about how to secure NodeJS Applications |
| spring | Examples about how to secure Spring Applications |
For any missing programming language and framework, you might want to consider looking at:
* **Quarkus**
* [Securing a Client Application](https://quarkus.io/guides/security-oidc-code-flow-authentication-tutorial)
* [Securing a Resource Server Application](https://quarkus.io/guides/security-oidc-bearer-token-authentication-tutorial)
We are happy to accept contributions for any reference that demonstrates how to
integrate Keycloak with additional programming languages or frameworks.
## Building, Testing, and Running the Quickstarts
First clone the Keycloak repository:
git clone https://github.com/keycloak/keycloak-quickstarts.git
cd keycloak-quickstarts
Each quickstart provides its own documentation with the steps you need to follow in order to build, test, and run the example.
Look at the `README.md` file at the root of a quickstart for more details.
### Chrome driver version
Some automated tests rely on the chrome browser present on your laptop. Also you need to have correct version of chrome driver according
to the version of the chrome browser used. In case of the issues, see [Chrome page](https://googlechromelabs.github.io/chrome-for-testing/) and download
correct chrome driver version for your Chrome browser. Then add system property `webdriver.chrome.driver` when running the tests according to chrome version
and add whole path to the chrome driver. For instance something like `-Dwebdriver.chrome.driver=/somedir/chromedriver-linux64-119.0.6045.105/chromedriver`.
## Help and Documentation
* [Documentation](https://www.keycloak.org/documentation.html)
* [User Mailing List](https://groups.google.com/d/forum/keycloak-user) - Mailing list for help and general questions about Keycloak
## Reporting Security Vulnerabilities
If you've found a security vulnerability, please look at the [instructions on how to properly report it](https://github.com/keycloak/keycloak/security/policy)
## Reporting an issue
If you believe you have discovered a defect in Keycloak, please open [an issue](https://github.com/keycloak/keycloak-quickstarts/issues).
Please remember to provide a good summary, description as well as steps to reproduce the issue.
## Contributing
Before contributing to this repository, please read our [contributing guidelines](CONTRIBUTING.md).
## Related Projects
* [Keycloak](https://github.com/keycloak/keycloak) - Keycloak Server and Java adapters
* [Keycloak Node.js Connect](https://github.com/keycloak/keycloak-nodejs-connect) - Node.js adapter for Keycloak
* [Keycloak Node.js Admin Client](https://github.com/keycloak/keycloak-nodejs-admin-client) - Node.js library for Keycloak Admin REST API
## License
* [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0)
", Assign "at most 3 tags" to the expected json: {"id":"6239","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"