{"id":19978861,"url":"https://github.com/ldclakmal/ballerina-security","last_synced_at":"2025-05-04T04:32:08.085Z","repository":{"id":37405319,"uuid":"215737177","full_name":"ldclakmal/ballerina-security","owner":"ldclakmal","description":"The one-stop place to learn/experience the examples, use-cases, demonstrations, and resources related to microservices security patterns with Ballerina, which is an open-source programming language for the cloud that makes it easier to use, combine, and create network services.","archived":false,"fork":false,"pushed_at":"2023-07-31T19:14:14.000Z","size":10697,"stargazers_count":8,"open_issues_count":0,"forks_count":5,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-08T03:11:09.126Z","etag":null,"topics":["auth","authentication","authorization","ballerina","ballerina-lang","basic-auth","certificates","cryptography","encoding","encryption","hacktoberfest","iam","introspection","jwks","jwt","ldap","oauth2","pki","public-key-cryptography","signing"],"latest_commit_sha":null,"homepage":"https://ldclakmal.me/ballerina-security","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ldclakmal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-17T08:07:00.000Z","updated_at":"2023-03-04T19:12:09.000Z","dependencies_parsed_at":"2024-11-13T03:35:44.158Z","dependency_job_id":"1848c7ac-c6ba-42f8-a6dc-ddfe3de37b78","html_url":"https://github.com/ldclakmal/ballerina-security","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ldclakmal%2Fballerina-security","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ldclakmal%2Fballerina-security/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ldclakmal%2Fballerina-security/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ldclakmal%2Fballerina-security/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ldclakmal","download_url":"https://codeload.github.com/ldclakmal/ballerina-security/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252288912,"owners_count":21724323,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["auth","authentication","authorization","ballerina","ballerina-lang","basic-auth","certificates","cryptography","encoding","encryption","hacktoberfest","iam","introspection","jwks","jwt","ldap","oauth2","pki","public-key-cryptography","signing"],"created_at":"2024-11-13T03:35:37.612Z","updated_at":"2025-05-04T04:32:03.073Z","avatar_url":"https://github.com/ldclakmal.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"**Official Website**: \u003chttps://ldclakmal.me/ballerina-security\u003e\n\n[![Ballerina-Security][ballerina-security-logo]](https://github.com/ldclakmal/ballerina-security)\n\nThe one-stop place to learn/experience the examples, use-cases, demonstrations, and resources related to microservices security patterns with [Ballerina](https://ballerina.io/), which is an open-source programming language for the cloud that makes it easier to use, combine, and create network services.\n\n## Summary\n\n[Ballerina](https://ballerina.io/) is an open-source programming language for the cloud that makes it easier to use, combine, and create network services. Ballerina has first-class support for a whole bunch of security features from transport layer security like SSL/TLS, mTLS to application layer security like Basic Auth, JWT Auth, OAuth2, etc.\n\nBallerina [standard library][stdlib] has [Auth][auth], [JWT][jwt], and [OAuth2][oauth2] packages which provide the authentication and authorization framework to secure the APIs of microservices written with [HTTP][http], [WebSocket][websocket], [GraphQL][graphql], [gRPC][grpc], and [WebSub][websub] protocols. The [Crypto][crypto] package facilitates APIs to perform cryptographic operations like hashing, HMAC generation, checksum generation, encryption, decryption, signing data digitally, verifying digitally signed data, etc., with different cryptographic algorithms. The [URL][url] module facilitates APIs to encode and decode a URL or part of a URL.\nThe [Kafka][kafka], [RabbitMQ][rabbitmq], [NATS][nats], [STAN][stan], [Email][email], [FTP][ftp], [TCP][tcp], and [UDP][udp] packages have their ways of securing APIs which are protocol-dependent.\n\nThis website is the latest deployed version of this [Ballerina Security GitHub Repository](https://github.com/ldclakmal/ballerina-security), which contains all the examples, use-cases, demonstrations, and resources related to Ballerina Security in one place. So, this is the one-stop place to learn/experience Ballerina Security.\n\n## Dashboard\n\n### Security Packages Status\n\nThis section demonstrates the current status of the security-specific packages of the [Ballerina Platform](https://github.com/ballerina-platform). All of these repositories are categorized under the [Ballerina Standard Library](https://github.com/ballerina-platform/ballerina-standard-library) packages.\n\n| Package              | Latest \u003cbr/\u003e Release                     | Package Status                                                                                        | Test Status                                                                                              | Bugs                                      | Open \u003cbr/\u003e PRs                               | API Docs \u0026 Package                                                                                     |\n|----------------------|------------------------------------------|-------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------|-------------------------------------------|----------------------------------------------|--------------------------------------------------------------------------------------------------------|\n| [**auth**][auth]     | [![tag][auth-badge-tags]][auth-tags]     | [![build][auth-badge-build]][auth-build] \u003cbr/\u003e [![codecov][auth-badge-codecov]][auth-codecov]         | [![trivy][auth-badge-trivy]][auth-trivy] \u003cbr/\u003e [![loadtest][auth-badge-loadtest]][auth-loadtest]         | [![bugs][auth-badge-bugs]][auth-bugs]     | [![pulls][auth-badge-pulls]][auth-pulls]     | [![docs][ballerina-docs-logo]][auth-docs] \u003cbr/\u003e [![package][ballerina-central-logo]][auth-package]     |\n| [**jwt**][jwt]       | [![tag][jwt-badge-tags]][jwt-tags]       | [![build][jwt-badge-build]][jwt-build] \u003cbr/\u003e [![codecov][jwt-badge-codecov]][jwt-codecov]             | [![trivy][jwt-badge-trivy]][jwt-trivy] \u003cbr/\u003e [![loadtest][jwt-badge-loadtest]][jwt-loadtest]             | [![bugs][jwt-badge-bugs]][jwt-bugs]       | [![pulls][jwt-badge-pulls]][jwt-pulls]       | [![docs][ballerina-docs-logo]][jwt-docs] \u003cbr/\u003e [![package][ballerina-central-logo]][jwt-package]       |\n| [**oauth2**][oauth2] | [![tag][oauth2-badge-tags]][oauth2-tags] | [![build][oauth2-badge-build]][oauth2-build] \u003cbr/\u003e [![codecov][oauth2-badge-codecov]][oauth2-codecov] | [![trivy][oauth2-badge-trivy]][oauth2-trivy] \u003cbr/\u003e [![loadtest][oauth2-badge-loadtest]][oauth2-loadtest] | [![bugs][oauth2-badge-bugs]][oauth2-bugs] | [![pulls][oauth2-badge-pulls]][oauth2-pulls] | [![docs][ballerina-docs-logo]][oauth2-docs] \u003cbr/\u003e [![package][ballerina-central-logo]][oauth2-package] |\n| [**crypto**][crypto] | [![tag][crypto-badge-tags]][crypto-tags] | [![build][crypto-badge-build]][crypto-build] \u003cbr/\u003e [![codecov][crypto-badge-codecov]][crypto-codecov] | [![trivy][crypto-badge-trivy]][crypto-trivy]                                                             | [![bugs][crypto-badge-bugs]][crypto-bugs] | [![pulls][crypto-badge-pulls]][crypto-pulls] | [![docs][ballerina-docs-logo]][crypto-docs] \u003cbr/\u003e [![package][ballerina-central-logo]][crypto-package] |\n| [**url**][url]       | [![tag][url-badge-tags]][url-tags]       | [![build][url-badge-build]][url-build] \u003cbr/\u003e [![codecov][url-badge-codecov]][url-codecov]             | [![trivy][url-badge-trivy]][url-trivy]                                                                   | [![bugs][url-badge-bugs]][url-bugs]       | [![pulls][url-badge-pulls]][url-pulls]       | [![docs][ballerina-docs-logo]][url-docs] \u003cbr/\u003e [![package][ballerina-central-logo]][url-package]       |\n\n### Release Compatibility Status\n\nThis section demonstrates the current status of the Ballerina programs that are executed against the latest (pre-release/release) Ballerina version which is configurable with individual GitHub actions. Mostly, these actions are used to test the compatibility of existing programs during the RC period of a release.\n\n[![BBEs](https://img.shields.io/github/actions/workflow/status/ldclakmal/ballerina-security/bbes.yml?logo=github\u0026label=BBEs)](https://github.com/ldclakmal/ballerina-security/actions/workflows/bbes.yml)\n[![Examples](https://img.shields.io/github/actions/workflow/status/ldclakmal/ballerina-security/examples.yml?logo=github\u0026label=Examples)](https://github.com/ldclakmal/ballerina-security/actions/workflows/examples.yml)\n[![Scenarios](https://img.shields.io/github/actions/workflow/status/ldclakmal/ballerina-security/scenarios.yml?logo=github\u0026label=Scenarios)](https://github.com/ldclakmal/ballerina-security/actions/workflows/scenarios.yml)\n\n## Ballerina by Examples (BBEs)\n\nThis section demonstrates the security related Ballerina by examples (BBEs).\n\n\u003e **Note** These examples are validated against the provided latest Ballerina version with an automated [test-suite](https://github.com/ldclakmal/ballerina-security/actions/workflows/bbes.yml). [![BBEs](https://img.shields.io/github/actions/workflow/status/ldclakmal/ballerina-security/bbes.yml?logo=github\u0026label=Status)](https://github.com/ldclakmal/ballerina-security/actions/workflows/bbes.yml)\n\n| Category           | ![BBE][ballerina-bbe-logo]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |\n|--------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| REST API Security  | [Service - SSL/TLS][bbe-http-service-ssl-tls] \u003cbr/\u003e [Service - Mutual SSL][bbe-http-service-mutual-ssl] \u003cbr/\u003e [Service - Basic Auth File User Store][bbe-http-service-basic-auth-file] \u003cbr/\u003e [Service - Basic Auth LDAP User Store][bbe-http-service-basic-auth-ldap] \u003cbr/\u003e [Service - JWT Auth][bbe-http-service-jwt-auth] \u003cbr/\u003e [Service - OAuth2][bbe-http-service-oauth2] \u003cbr/\u003e [Client - SSL/TLS][bbe-http-client-ssl-tls] \u003cbr/\u003e [Client - Mutual SSL][bbe-http-client-mutual-ssl] \u003cbr/\u003e [Client - Basic Auth][bbe-http-client-basic-auth] \u003cbr/\u003e [Client - Bearer Token Auth][bbe-http-client-bearer-token-auth] \u003cbr/\u003e [Client - Self Signed JWT Auth][bbe-http-client-self-signed-jwt-auth] \u003cbr/\u003e [Client - OAuth2 Client Credentials Grant Type][bbe-http-client-oauth2-client-credentials-grant] \u003cbr/\u003e [Client - OAuth2 Password Grant Type][bbe-http-client-oauth2-password-grant] \u003cbr/\u003e [Client - OAuth2 Refresh Token Grant Type][bbe-http-client-oauth2-refresh-token-grant] \u003cbr/\u003e [Client - OAuth2 JWT Bearer Grant Type][bbe-http-client-oauth2-jwt-bearer-grant]                                                                            |\n| WebSocket Security | [Service - SSL/TLS][bbe-websocket-service-ssl-tls] \u003cbr/\u003e [Service - Mutual SSL][bbe-websocket-service-mutual-ssl] \u003cbr/\u003e [Service - Basic Auth File User Store][bbe-websocket-service-basic-auth-file] \u003cbr/\u003e [Service - Basic Auth LDAP User Store][bbe-websocket-service-basic-auth-ldap] \u003cbr/\u003e [Service - JWT Auth][bbe-websocket-service-jwt-auth] \u003cbr/\u003e [Service - OAuth2][bbe-websocket-service-oauth2] \u003cbr/\u003e [Client - SSL/TLS][bbe-websocket-client-ssl-tls] \u003cbr/\u003e [Client - Mutual SSL][bbe-websocket-client-mutual-ssl] \u003cbr/\u003e [Client - Basic Auth][bbe-websocket-client-basic-auth] \u003cbr/\u003e [Client - Bearer Token Auth][bbe-websocket-client-bearer-token-auth] \u003cbr/\u003e [Client - Self Signed JWT Auth][bbe-websocket-client-self-signed-jwt-auth] \u003cbr/\u003e [Client - OAuth2 Client Credentials Grant Type][bbe-websocket-client-oauth2-client-credentials-grant] \u003cbr/\u003e [Client - OAuth2 Password Grant Type][bbe-websocket-client-oauth2-password-grant] \u003cbr/\u003e [Client - OAuth2 Refresh Token Grant Type][bbe-websocket-client-oauth2-refresh-token-grant] \u003cbr/\u003e [Client - OAuth2 JWT Bearer Grant Type][bbe-websocket-client-oauth2-jwt-bearer-grant] |\n| GraphQL Security   | [Service - SSL/TLS][bbe-graphql-service-ssl-tls] \u003cbr/\u003e [Service - Mutual SSL][bbe-graphql-service-mutual-ssl] \u003cbr/\u003e [Service - Basic Auth File User Store][bbe-graphql-service-basic-auth-file] \u003cbr/\u003e [Service - Basic Auth LDAP User Store][bbe-graphql-service-basic-auth-ldap] \u003cbr/\u003e [Service - JWT Auth][bbe-graphql-service-jwt-auth] \u003cbr/\u003e [Service - OAuth2][bbe-graphql-service-oauth2]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |\n| gRPC Security      | [Service - SSL/TLS][bbe-grpc-service-ssl-tls] \u003cbr/\u003e [Service - Mutual SSL][bbe-grpc-service-mutual-ssl] \u003cbr/\u003e [Service - Basic Auth File User Store][bbe-grpc-service-basic-auth-file] \u003cbr/\u003e [Service - Basic Auth LDAP User Store][bbe-grpc-service-basic-auth-ldap] \u003cbr/\u003e [Service - JWT Auth][bbe-grpc-service-jwt-auth] \u003cbr/\u003e [Service - OAuth2][bbe-grpc-service-oauth2] \u003cbr/\u003e [Client - SSL/TLS][bbe-grpc-client-ssl-tls] \u003cbr/\u003e [Client - Mutual SSL][bbe-grpc-client-mutual-ssl] \u003cbr/\u003e [Client - Basic Auth][bbe-grpc-client-basic-auth] \u003cbr/\u003e [Client - Bearer Token Auth][bbe-grpc-client-bearer-token-auth] \u003cbr/\u003e [Client - Self Signed JWT Auth][bbe-grpc-client-self-signed-jwt-auth] \u003cbr/\u003e [Client - OAuth2 Client Credentials Grant Type][bbe-grpc-client-oauth2-client-credentials-grant] \u003cbr/\u003e [Client - OAuth2 Password Grant Type][bbe-grpc-client-oauth2-password-grant] \u003cbr/\u003e [Client - OAuth2 Refresh Token Grant Type][bbe-grpc-client-oauth2-refresh-token-grant] \u003cbr/\u003e [Client - OAuth2 JWT Bearer Grant Type][bbe-grpc-client-oauth2-jwt-bearer-grant]                                                                            |\n| Kafka Security     | [SASL Authentication - Consumer][bbe-kafka-consumer-sasl] \u003cbr/\u003e [SASL Authentication - Producer][bbe-kafka-producer-sasl]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |\n| RabbitMQ Security  | [Secured Connection - Producer \u0026 Consumer][bbe-rabbitmq-security]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |\n| NATS Security      | [Secured Connection - Publisher \u0026 Subscriber][bbe-nats-security]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |\n| STAN Security      | [Secured Connection - Publisher \u0026 Subscriber][bbe-stan-security]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |\n| FTP Security       | [Listener - SFTP][bbe-ftp-listener-sftp] \u003cbr/\u003e [Client - SFTP][bbe-ftp-client-sftp]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |\n| TCP Security       | [TCP Transport Security][bbe-tcp-ssl-tls]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |\n| Security           | [Cryptographic Operations][bbe-cryptography] \u003cbr/\u003e [JWT Issue \u0026 Validate][bbe-jwt-issue-validate]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |\n| URL                | [URL Encode \u0026 Decode][bbe-url-encode-decode]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |\n\n## Examples\n\nThis section demonstrates the security examples with authentication and authorization for different protocols supported by Ballerina.\n\n\u003e **Note** These examples are validated against the provided latest Ballerina version with an automated [test-suite](https://github.com/ldclakmal/ballerina-security/actions/workflows/examples.yml). [![Examples](https://img.shields.io/github/actions/workflow/status/ldclakmal/ballerina-security/examples.yml?logo=github\u0026label=Status)](https://github.com/ldclakmal/ballerina-security/actions/workflows/examples.yml)\n\n1. [HTTP](https://github.com/ldclakmal/ballerina-security/tree/master/examples/http)\n2. [WebSocket](https://github.com/ldclakmal/ballerina-security/tree/master/examples/websocket)\n3. [GraphQL](https://github.com/ldclakmal/ballerina-security/tree/master/examples/graphql)\n4. [gRPC](https://github.com/ldclakmal/ballerina-security/tree/master/examples/grpc)\n5. [WebSub](https://github.com/ldclakmal/ballerina-security/tree/master/examples/websub)\n6. [Kafka](https://github.com/ldclakmal/ballerina-security/tree/master/examples/kafka)\n7. [RabbitMQ](https://github.com/ldclakmal/ballerina-security/tree/master/examples/rabbitmq)\n8. [NATS](https://github.com/ldclakmal/ballerina-security/tree/master/examples/nats)\n9. [STAN](https://github.com/ldclakmal/ballerina-security/tree/master/examples/stan)\n10. [Email](https://github.com/ldclakmal/ballerina-security/tree/master/examples/email)\n11. [FTP](https://github.com/ldclakmal/ballerina-security/tree/master/examples/ftp)\n12. [TCP](https://github.com/ldclakmal/ballerina-security/tree/master/examples/tcp)\n13. UDP _(Pending)_\n\n## Scenarios\n\nThis section demonstrates the real-world scenarios which have authentication and authorization requirements and how that can be supported with Ballerina.\n\n\u003e **Note** These scenarios are validated against the provided latest Ballerina version with an automated [test-suite](https://github.com/ldclakmal/ballerina-security/actions/workflows/scenarios.yml). [![Scenarios](https://img.shields.io/github/actions/workflow/status/ldclakmal/ballerina-security/scenarios.yml?logo=github\u0026label=Status)](https://github.com/ldclakmal/ballerina-security/actions/workflows/scenarios.yml)\n\n1. [Ballerina Secure Token Service (STS)](./scenarios/sts)\n2. [E-Commerce system](./scenarios/e-commerce-system)\n3. [Secured Order Management Service with JWT Auth](https://github.com/ballerina-platform/module-ballerina-jwt/blob/master/examples/order-management-service/README.md)\n4. [Secured Order Management Service with OAuth2](https://github.com/ballerina-platform/module-ballerina-oauth2/blob/master/examples/order-management-service/README.md)\n\n---\n\n## References\n\nThis section has a collection of important resources which were created/referred for the design and implementation of the current Ballerina Security architecture and its related components. All the resources are open source and publicly available.\n\n### Specifications\n\n- [Specification: Ballerina Auth Library](https://github.com/ballerina-platform/module-ballerina-auth/blob/master/docs/spec/spec.md)\n- [Specification: Ballerina JWT Library](https://github.com/ballerina-platform/module-ballerina-jwt/blob/master/docs/spec/spec.md)\n- [Specification: Ballerina OAuth2 Library](https://github.com/ballerina-platform/module-ballerina-oauth2/blob/master/docs/spec/spec.md)\n\n### IETF RFCs\n\n- [RFC 8693 - OAuth 2.0 Token Exchange](https://tools.ietf.org/html/rfc8693)\n- [RFC 7662 - OAuth 2.0 Token Introspection](https://tools.ietf.org/html/rfc7662)\n- [RFC 7519 - JSON Web Token (JWT)](https://tools.ietf.org/html/rfc7519)\n- [RFC 7518 - JSON Web Algorithms (JWA)](https://tools.ietf.org/html/rfc7518)\n- [RFC 7517 - JSON Web Key (JWK)](https://tools.ietf.org/html/rfc7517)\n- [RFC 7516 - JSON Web Encryption (JWE)](https://tools.ietf.org/html/rfc7516)\n- [RFC 7515 - JSON Web Signature (JWS)](https://tools.ietf.org/html/rfc7515)\n- [RFC 6749 - The OAuth 2.0 Authorization Framework](https://tools.ietf.org/html/rfc6749)\n- [RFC 7617 - The 'Basic' HTTP Authentication Scheme](https://tools.ietf.org/html/rfc7617)\n\n### Blogs\n\n- 2022 Feb - [Securing Microservices with OAuth2](https://medium.com/@ldclakmal/securing-microservices-with-oauth2-475a72bd5ddd)\n- 2021 Oct - [Securing Microservices with JWT](https://medium.com/@ldclakmal/securing-microservices-with-jwt-a16b738b110f)\n- 2021 Aug - [Microservices Security with Ballerina](https://medium.com/@ldclakmal/microservices-security-with-ballerina-e9d430f05373)\n- 2021 Aug - [HTTP Security in Ballerina](https://medium.com/@ldclakmal/http-security-in-ballerina-b0b5927866f9)\n\n### Research \u0026 Design\n\n- 2021 Sep - [[Design] Ballerina GraphQL Authentication and Authorization](https://docs.google.com/document/d/1ebwR5qXosyKjT7tSr4HgcYDq1vFsuzQxtiMgdET1G0o/edit?usp=sharing)\n- 2021 Apr - [[Review] Ballerina Security APIs of StdLib Protocol Connector Module](https://docs.google.com/document/d/16r_gjBi7SIqVffKVLtKGBevHQRxp7Fnoo9ELyIWV1BM/edit?usp=sharing)\n- 2021 Feb - [[Re-Design] Ballerina SecureSocket API](https://docs.google.com/document/d/1Y2kLTOw9-sRK1vSEzw5NYdWSA4nwVCvPf3wrbwNDA4s/edit?usp=sharing)\n- 2020 Nov - [[Design] Ballerina Authentication \u0026 Authorization Framework](https://docs.google.com/document/d/1dGw5uUP6kqZNTwMfQ_Ik-k0HTMKhX70XpEA3tys9_kk/edit?usp=sharing)\n- 2020 Oct - [[Research] Comparison on Ballerina Security Features/APIs with Programming Languages](https://docs.google.com/spreadsheets/d/1PyMAlAvgkEL0RpW8CVUj1ccW_61Vm6SMbvadFVYRpSA/edit?usp=sharing)\n\n### GitHub Pull Requests\n\n- 2021 Aug - [Add JWT bearer grant support for OAuth2](https://github.com/ballerina-platform/module-ballerina-oauth2/pull/287)\n- 2021 Aug - [Add HMAC signature support for JWT](https://github.com/ballerina-platform/module-ballerina-jwt/pull/307)\n- 2021 Jun - [Implement declarative auth design for WebSocket upgrade service](https://github.com/ballerina-platform/module-ballerina-websocket/pull/216)\n- 2021 May - [Implement declarative auth design for GraphQL service](https://github.com/ballerina-platform/module-ballerina-graphql/pull/210)\n- 2021 Mar - [Redesign HTTP listener/client SecureSocket API](https://github.com/ballerina-platform/module-ballerina-http/pull/255)\n- 2021 Mar - [Add cert file and mTLS support for JDK11 client of OAuth2 module](https://github.com/ballerina-platform/module-ballerina-oauth2/pull/98)\n- 2021 Mar - [Add cert file and mTLS support for JDK11 client of JWT module](https://github.com/ballerina-platform/module-ballerina-jwt/pull/137)\n- 2021 Feb - [Extend private key/public cert support for JWT signature generation/validation](https://github.com/ballerina-platform/module-ballerina-jwt/pull/109)\n- 2021 Feb - [Add support to decode private/public keys from key/cert files](https://github.com/ballerina-platform/module-ballerina-crypto/pull/61)\n- 2021 Jan - [Implement Declarative Auth Design](https://github.com/ballerina-platform/module-ballerina-http/pull/155)\n- 2021 Jan - [Implement Imperative Auth Design](https://github.com/ballerina-platform/module-ballerina-http/pull/142)\n- 2021 Jan - [Read custom fields of OAuth2 introspection response](https://github.com/ballerina-platform/module-ballerina-oauth2/pull/49)\n- 2021 Jan - [Send optional parameters to introspection endpoint](https://github.com/ballerina-platform/module-ballerina-http/pull/164)\n- 2021 Jan - [Send custom parameters to introspection endpoint](https://github.com/ballerina-platform/module-ballerina-oauth2/pull/53)\n- 2020 Apr - [Implement JWT signature validation with JWKs](https://github.com/ballerina-platform/ballerina-lang/pull/22982)\n- 2020 Apr - [Add API to generate public key from JWKs parameters](https://github.com/ballerina-platform/ballerina-lang/pull/22890)\n- 2019 Aug - [Remove redundant APIs and replace usages of Encoding module](https://github.com/ballerina-platform/ballerina-lang/pull/18309)\n- 2019 Jun - [Refactor outbound authentication with custom providers and handlers](https://github.com/ballerina-platform/ballerina-lang/pull/15696)\n- 2019 Jun - [Implement OAuth2 Inbound Authentication](https://github.com/ballerina-platform/ballerina-lang/pull/15489)\n- 2019 Jun - [Refactor Modules for Inbound Authentication](https://github.com/ballerina-platform/ballerina-lang/pull/15435)\n- 2019 May - [Introduce Configuration Pattern for Authn Handlers and Scopes](https://github.com/ballerina-platform/ballerina-lang/pull/15363)\n- 2019 May - [Improve HTTP secure client for OAuth2 grant types](https://github.com/ballerina-platform/ballerina-lang/pull/14419)\n- 2019 May - [Refactor inbound authentication with custom provider and handlers](https://github.com/ballerina-platform/ballerina-lang/pull/15056)\n\n### YouTube Videos\n\n- 2021 Mar - [How Netflix Scales Its API with GraphQL Federation at *QCon Plus 2021*](https://youtu.be/QrEOvHdH2Cg)\n- 2020 Aug - [How to Auth: Secure a GraphQL API with Confidence at *Apollo GraphQL Summit*](https://youtu.be/dBuU61ABEDs)\n- 2020 Apr - [What's New With OAuth and OIDC? at *OktaDev*](https://youtu.be/g_aVPdwBTfw)\n- 2018 Feb - [OAuth 2.0 and OpenID Connect at *OktaDev*](https://youtu.be/QrEOvHdH2Cg)\n- 2017 Nov - [Handling Authentication and Authorization in GraphQL at *GraphQL Summit 2017*](https://youtu.be/4_Bcw7BULC8)\n\n### Books\n\n- [Advanced API Security: OAuth 2.0 and Beyond - 2nd Edition _by Prabath Siriwardena_](https://www.amazon.com/gp/product/1484220498/)\n- [Microservices Security in Action _by Prabath Siriwardena and Nuwan Dias_](https://www.amazon.com/gp/product/1617295957/)\n\n### Guides\n\n- [Ballerina HTTP Listener Auth](https://github.com/ldclakmal/ballerina-security/blob/master/guides/ballerina-http-listener-auth.md)\n- [Ballerina HTTP Client Auth](https://github.com/ldclakmal/ballerina-security/blob/master/guides/ballerina-http-client-auth.md)\n- [How to obtain Google OAuth2.0 Credentials](https://github.com/ldclakmal/ballerina-security/blob/master/guides/how-to-obtain-google-oauth2-credentials.md)\n- [How to obtain Twilio Credentials](https://github.com/ldclakmal/ballerina-security/blob/master/guides/how-to-obtain-twilio-credentials.md)\n- [How to Start OpenLDAP Server with User Data](https://github.com/ldclakmal/ballerina-security/blob/master/guides/how-to-start-open-ldap-server.md)\n- [Cryptography](https://github.com/ldclakmal/ballerina-security/blob/master/guides/cryptography.md)\n\n### Policies\n\n- [Ballerina Security Policy](https://ballerina.io/security-policy/)\n- [Scope of the Ballerina Security Domain](https://github.com/ldclakmal/ballerina-security/blob/master/guides/ballerina-security-scope.md)\n\n### [Internal]\n\n- [Security Vulnerability Management Process](https://github.com/wso2-enterprise/internal-support-ballerina/blob/main/docs/security_vulnerability_management_process.md)\n- [Open Issues/Tasks](https://github.com/wso2-enterprise/internal-support-ballerina/labels/Type%2FSecurity)\n\n---\n\n### About me - \u003chttps://ldclakmal.me\u003e\n\n\u003ca href=\"https://linkedin.com/in/ldclakmal\" target=\"_blank\"\u003e\u003cimg src=\"./_resources/icons/32x/linkedin.png\" alt=\"linkedin\"\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\n\u003ca href=\"https://github.com/ldclakmal\" target=\"_blank\"\u003e\u003cimg src=\"./_resources/icons/32x/github.png\" alt=\"github\"\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\n\u003ca href=\"https://medium.com/@ldclakmal\" target=\"_blank\"\u003e\u003cimg src=\"./_resources/icons/32x/medium.png\" alt=\"medium\"\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\n\u003ca href=\"https://twitter.com/ldclakmal92\" target=\"_blank\"\u003e\u003cimg src=\"./_resources/icons/32x/twitter.png\" alt=\"twitter\"\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\n\u003ca href=\"https://stackoverflow.com/users/4314651/ldclakmal?tab=profile\" target=\"_blank\"\u003e\u003cimg src=\"./_resources/icons/32x/stack-overflow.png\" alt=\"stackoverflow\"\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\n\u003ca href=\"https://scholar.google.com/citations?user=64UY9M0AAAAJ\" target=\"_blank\"\u003e\u003cimg src=\"./_resources/icons/32x/google-scholar.png\" alt=\"google-scholar\"\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\n\u003ca href=\"https://www.flickr.com/people/ldclakmal\" target=\"_blank\"\u003e\u003cimg src=\"./_resources/icons/32x/flickr.png\" alt=\"flickr\"\u003e\u003c/a\u003e\n\n[auth]: https://github.com/ballerina-platform/module-ballerina-auth\n[auth-tags]: https://github.com/ballerina-platform/module-ballerina-auth/tags\n[auth-build]: https://github.com/ballerina-platform/module-ballerina-auth/actions/workflows/build-timestamped-master.yml\n[auth-trivy]: https://github.com/ballerina-platform/module-ballerina-auth/actions/workflows/trivy-scan.yml\n[auth-loadtest]: https://github.com/ballerina-platform/module-ballerina-auth/actions/workflows/process-load-test-result.yml\n[auth-codecov]: https://codecov.io/gh/ballerina-platform/module-ballerina-auth\n[auth-bugs]: https://github.com/ballerina-platform/ballerina-standard-library/issues?q=is%3Aopen+is%3Aissue+label%3Amodule%2Fauth+label%3Atype%2Fbug\n[auth-pulls]: https://github.com/ballerina-platform/module-ballerina-auth/pulls\n[auth-docs]: https://lib.ballerina.io/ballerina/auth/latest\n[auth-package]: https://central.ballerina.io/ballerina/auth\n[auth-badge-tags]: https://img.shields.io/github/v/tag/ballerina-platform/module-ballerina-auth?label=\n[auth-badge-build]: https://github.com/ballerina-platform/module-ballerina-auth/actions/workflows/build-timestamped-master.yml/badge.svg\n[auth-badge-trivy]: https://github.com/ballerina-platform/module-ballerina-auth/actions/workflows/trivy-scan.yml/badge.svg\n[auth-badge-loadtest]: https://img.shields.io/github/actions/workflow/status/ballerina-platform/module-ballerina-auth/process-load-test-result.yml?label=Load%20Test\u0026logo=github\n[auth-badge-codecov]: https://codecov.io/gh/ballerina-platform/module-ballerina-auth/branch/master/graph/badge.svg\n[auth-badge-bugs]: https://img.shields.io/github/issues-search/ballerina-platform/ballerina-standard-library?query=is%3Aopen+label%3Amodule%2Fauth+label%3AType%2FBug\u0026label=\u0026color=30c955\n[auth-badge-pulls]: https://img.shields.io/github/issues-pr-raw/ballerina-platform/module-ballerina-auth?label=\n\n[jwt]: https://github.com/ballerina-platform/module-ballerina-jwt\n[jwt-tags]: https://github.com/ballerina-platform/module-ballerina-jwt/tags\n[jwt-build]: https://github.com/ballerina-platform/module-ballerina-jwt/actions/workflows/build-timestamped-master.yml\n[jwt-trivy]: https://github.com/ballerina-platform/module-ballerina-jwt/actions/workflows/trivy-scan.yml\n[jwt-loadtest]: https://github.com/ballerina-platform/module-ballerina-jwt/actions/workflows/process-load-test-result.yml\n[jwt-codecov]: https://codecov.io/gh/ballerina-platform/module-ballerina-jwt\n[jwt-bugs]: https://github.com/ballerina-platform/ballerina-standard-library/issues?q=is%3Aopen+is%3Aissue+label%3Amodule%2Fjwt+label%3Atype%2Fbug\n[jwt-pulls]: https://github.com/ballerina-platform/module-ballerina-jwt/pulls\n[jwt-docs]: https://lib.ballerina.io/ballerina/jwt/latest\n[jwt-package]: https://central.ballerina.io/ballerina/jwt\n[jwt-badge-tags]: https://img.shields.io/github/v/tag/ballerina-platform/module-ballerina-jwt?label=\n[jwt-badge-build]: https://github.com/ballerina-platform/module-ballerina-jwt/actions/workflows/build-timestamped-master.yml/badge.svg\n[jwt-badge-trivy]: https://github.com/ballerina-platform/module-ballerina-jwt/actions/workflows/trivy-scan.yml/badge.svg\n[jwt-badge-loadtest]: https://img.shields.io/github/actions/workflow/status/ballerina-platform/module-ballerina-jwt/process-load-test-result.yml?label=Load%20Test\u0026logo=github\n[jwt-badge-codecov]: https://codecov.io/gh/ballerina-platform/module-ballerina-jwt/branch/master/graph/badge.svg\n[jwt-badge-bugs]: https://img.shields.io/github/issues-search/ballerina-platform/ballerina-standard-library?query=is%3Aopen+label%3Amodule%2Fjwt+label%3AType%2FBug\u0026label=\u0026color=30c955\n[jwt-badge-pulls]: https://img.shields.io/github/issues-pr-raw/ballerina-platform/module-ballerina-jwt?label=\n\n[oauth2]: https://github.com/ballerina-platform/module-ballerina-oauth2\n[oauth2-tags]: https://github.com/ballerina-platform/module-ballerina-oauth2/tags\n[oauth2-build]: https://github.com/ballerina-platform/module-ballerina-oauth2/actions/workflows/build-timestamped-master.yml\n[oauth2-trivy]: https://github.com/ballerina-platform/module-ballerina-oauth2/actions/workflows/trivy-scan.yml\n[oauth2-loadtest]: https://github.com/ballerina-platform/module-ballerina-oauth2/actions/workflows/process-load-test-result.yml\n[oauth2-codecov]: https://codecov.io/gh/ballerina-platform/module-ballerina-oauth2\n[oauth2-bugs]: https://github.com/ballerina-platform/ballerina-standard-library/issues?q=is%3Aopen+is%3Aissue+label%3Amodule%2Foauth2+label%3Atype%2Fbug\n[oauth2-pulls]: https://github.com/ballerina-platform/module-ballerina-oauth2/pulls\n[oauth2-docs]: https://lib.ballerina.io/ballerina/oauth2/latest\n[oauth2-package]: https://central.ballerina.io/ballerina/oauth2\n[oauth2-badge-tags]: https://img.shields.io/github/v/tag/ballerina-platform/module-ballerina-oauth2?label=\n[oauth2-badge-build]: https://github.com/ballerina-platform/module-ballerina-oauth2/actions/workflows/build-timestamped-master.yml/badge.svg\n[oauth2-badge-trivy]: https://github.com/ballerina-platform/module-ballerina-oauth2/actions/workflows/trivy-scan.yml/badge.svg\n[oauth2-badge-loadtest]: https://img.shields.io/github/actions/workflow/status/ballerina-platform/module-ballerina-oauth2/process-load-test-result.yml?label=Load%20Test\u0026logo=github\n[oauth2-badge-codecov]: https://codecov.io/gh/ballerina-platform/module-ballerina-oauth2/branch/master/graph/badge.svg\n[oauth2-badge-bugs]: https://img.shields.io/github/issues-search/ballerina-platform/ballerina-standard-library?query=is%3Aopen+label%3Amodule%2Foauth2+label%3AType%2FBug\u0026label=\u0026color=30c955\n[oauth2-badge-pulls]: https://img.shields.io/github/issues-pr-raw/ballerina-platform/module-ballerina-oauth2?label=\n\n[crypto]: https://github.com/ballerina-platform/module-ballerina-crypto\n[crypto-tags]: https://github.com/ballerina-platform/module-ballerina-crypto/tags\n[crypto-build]: https://github.com/ballerina-platform/module-ballerina-crypto/actions/workflows/build-timestamped-master.yml\n[crypto-trivy]: https://github.com/ballerina-platform/module-ballerina-crypto/actions/workflows/trivy-scan.yml\n[crypto-codecov]: https://codecov.io/gh/ballerina-platform/module-ballerina-crypto\n[crypto-bugs]: https://github.com/ballerina-platform/ballerina-standard-library/issues?q=is%3Aopen+is%3Aissue+label%3Amodule%2Fcrypto+label%3Atype%2Fbug\n[crypto-pulls]: https://github.com/ballerina-platform/module-ballerina-crypto/pulls\n[crypto-docs]: https://lib.ballerina.io/ballerina/crypto/latest\n[crypto-package]: https://central.ballerina.io/ballerina/crypto\n[crypto-badge-tags]: https://img.shields.io/github/v/tag/ballerina-platform/module-ballerina-crypto?label=\n[crypto-badge-build]: https://github.com/ballerina-platform/module-ballerina-crypto/actions/workflows/build-timestamped-master.yml/badge.svg\n[crypto-badge-trivy]: https://github.com/ballerina-platform/module-ballerina-crypto/actions/workflows/trivy-scan.yml/badge.svg\n[crypto-badge-codecov]: https://codecov.io/gh/ballerina-platform/module-ballerina-crypto/branch/master/graph/badge.svg\n[crypto-badge-bugs]: https://img.shields.io/github/issues-search/ballerina-platform/ballerina-standard-library?query=is%3Aopen+label%3Amodule%2Fcrypto+label%3AType%2FBug\u0026label=\u0026color=30c955\n[crypto-badge-pulls]: https://img.shields.io/github/issues-pr-raw/ballerina-platform/module-ballerina-crypto?label=\n\n[url]: https://github.com/ballerina-platform/module-ballerina-url\n[url-tags]: https://github.com/ballerina-platform/module-ballerina-url/tags\n[url-build]: https://github.com/ballerina-platform/module-ballerina-url/actions/workflows/build-timestamped-master.yml\n[url-trivy]: https://github.com/ballerina-platform/module-ballerina-url/actions/workflows/trivy-scan.yml\n[url-codecov]: https://codecov.io/gh/ballerina-platform/module-ballerina-url\n[url-bugs]: https://github.com/ballerina-platform/ballerina-standard-library/issues?q=is%3Aopen+is%3Aissue+label%3Amodule%2Furl+label%3Atype%2Fbug\n[url-pulls]: https://github.com/ballerina-platform/module-ballerina-url/pulls\n[url-docs]: https://lib.ballerina.io/ballerina/url/latest\n[url-package]: https://central.ballerina.io/ballerina/url\n[url-badge-tags]: https://img.shields.io/github/v/tag/ballerina-platform/module-ballerina-url?label=\n[url-badge-build]: https://github.com/ballerina-platform/module-ballerina-url/actions/workflows/build-timestamped-master.yml/badge.svg\n[url-badge-trivy]: https://github.com/ballerina-platform/module-ballerina-url/actions/workflows/trivy-scan.yml/badge.svg\n[url-badge-codecov]: https://codecov.io/gh/ballerina-platform/module-ballerina-url/branch/master/graph/badge.svg\n[url-badge-bugs]: https://img.shields.io/github/issues-search/ballerina-platform/ballerina-standard-library?query=is%3Aopen+label%3Amodule%2Furl+label%3AType%2FBug\u0026label=\u0026color=30c955\n[url-badge-pulls]: https://img.shields.io/github/issues-pr-raw/ballerina-platform/module-ballerina-url?label=\n\n[stdlib]: https://github.com/ballerina-platform/ballerina-standard-library\n[http]: https://github.com/ballerina-platform/module-ballerina-http\n[grpc]: https://github.com/ballerina-platform/module-ballerina-grpc\n[websocket]: https://github.com/ballerina-platform/module-ballerina-websocket\n[websub]: https://github.com/ballerina-platform/module-ballerina-websub\n[graphql]: https://github.com/ballerina-platform/module-ballerina-graphql\n[kafka]: https://github.com/ballerina-platform/module-ballerinax-kafka\n[rabbitmq]: https://github.com/ballerina-platform/module-ballerinax-rabbitmq\n[nats]: https://github.com/ballerina-platform/module-ballerinax-nats\n[stan]: https://github.com/ballerina-platform/module-ballerinax-stan\n[email]: https://github.com/ballerina-platform/module-ballerina-email\n[ftp]: https://github.com/ballerina-platform/module-ballerina-ftp\n[tcp]: https://github.com/ballerina-platform/module-ballerina-tcp\n[udp]: https://github.com/ballerina-platform/module-ballerina-udp\n\n[bbe-cryptography]: https://ballerina.io/learn/by-example/security-crypto.html\n[bbe-jwt-issue-validate]: https://ballerina.io/learn/by-example/security-jwt-issue-validate.html\n[bbe-url-encode-decode]: https://ballerina.io/learn/by-example/url-encode-decode.html\n\n[bbe-http-service-ssl-tls]: https://ballerina.io/learn/by-example/http-service-ssl-tls.html\n[bbe-http-service-mutual-ssl]: https://ballerina.io/learn/by-example/http-service-mutual-ssl.html\n[bbe-http-service-basic-auth-file]: https://ballerina.io/learn/by-example/http-service-basic-auth-file-user-store.html\n[bbe-http-service-basic-auth-ldap]: https://ballerina.io/learn/by-example/http-service-basic-auth-ldap-user-store.html\n[bbe-http-service-jwt-auth]: https://ballerina.io/learn/by-example/http-service-jwt-auth.html\n[bbe-http-service-oauth2]: https://ballerina.io/learn/by-example/http-service-oauth2.html\n[bbe-http-client-ssl-tls]: https://ballerina.io/learn/by-example/http-client-ssl-tls.html\n[bbe-http-client-mutual-ssl]: https://ballerina.io/learn/by-example/http-client-mutual-ssl.html\n[bbe-http-client-basic-auth]: https://ballerina.io/learn/by-example/http-client-basic-auth.html\n[bbe-http-client-bearer-token-auth]: https://ballerina.io/learn/by-example/http-client-bearer-token-auth.html\n[bbe-http-client-self-signed-jwt-auth]: https://ballerina.io/learn/by-example/http-client-self-signed-jwt-auth.html\n[bbe-http-client-oauth2-client-credentials-grant]: https://ballerina.io/learn/by-example/http-client-oauth2-client-credentials-grant-type.html\n[bbe-http-client-oauth2-password-grant]: https://ballerina.io/learn/by-example/http-client-oauth2-password-grant-type.html\n[bbe-http-client-oauth2-refresh-token-grant]: https://ballerina.io/learn/by-example/http-client-oauth2-refresh-token-grant-type.html\n[bbe-http-client-oauth2-jwt-bearer-grant]: https://ballerina.io/learn/by-example/http-client-oauth2-jwt-bearer-grant-type.html\n\n[bbe-websocket-service-ssl-tls]: https://ballerina.io/learn/by-example/websocket-service-ssl-tls.html\n[bbe-websocket-service-mutual-ssl]: https://ballerina.io/learn/by-example/websocket-service-mutual-ssl.html\n[bbe-websocket-service-basic-auth-file]: https://ballerina.io/learn/by-example/websocket-service-basic-auth-file-user-store.html\n[bbe-websocket-service-basic-auth-ldap]: https://ballerina.io/learn/by-example/websocket-service-basic-auth-ldap-user-store.html\n[bbe-websocket-service-jwt-auth]: https://ballerina.io/learn/by-example/websocket-service-jwt-auth.html\n[bbe-websocket-service-oauth2]: https://ballerina.io/learn/by-example/websocket-service-oauth2.html\n[bbe-websocket-client-ssl-tls]: https://ballerina.io/learn/by-example/websocket-client-ssl-tls.html\n[bbe-websocket-client-mutual-ssl]: https://ballerina.io/learn/by-example/websocket-client-mutual-ssl.html\n[bbe-websocket-client-basic-auth]: https://ballerina.io/learn/by-example/websocket-client-basic-auth.html\n[bbe-websocket-client-bearer-token-auth]: https://ballerina.io/learn/by-example/websocket-client-bearer-token-auth.html\n[bbe-websocket-client-self-signed-jwt-auth]: https://ballerina.io/learn/by-example/websocket-client-self-signed-jwt-auth.html\n[bbe-websocket-client-oauth2-client-credentials-grant]: https://ballerina.io/learn/by-example/websocket-client-oauth2-client-credentials-grant-type.html\n[bbe-websocket-client-oauth2-password-grant]: https://ballerina.io/learn/by-example/websocket-client-oauth2-password-grant-type.html\n[bbe-websocket-client-oauth2-refresh-token-grant]: https://ballerina.io/learn/by-example/websocket-client-oauth2-refresh-token-grant-type.html\n[bbe-websocket-client-oauth2-jwt-bearer-grant]: https://ballerina.io/learn/by-example/websocket-client-oauth2-jwt-bearer-grant-type.html\n\n[bbe-graphql-service-ssl-tls]: https://ballerina.io/learn/by-example/graphql-service-ssl-tls.html\n[bbe-graphql-service-mutual-ssl]: https://ballerina.io/learn/by-example/graphql-service-mutual-ssl.html\n[bbe-graphql-service-basic-auth-file]: https://ballerina.io/learn/by-example/graphql-service-basic-auth-file-user-store.html\n[bbe-graphql-service-basic-auth-ldap]: https://ballerina.io/learn/by-example/graphql-service-basic-auth-ldap-user-store.html\n[bbe-graphql-service-jwt-auth]: https://ballerina.io/learn/by-example/graphql-service-jwt-auth.html\n[bbe-graphql-service-oauth2]: https://ballerina.io/learn/by-example/graphql-service-oauth2.html\n\n[bbe-grpc-service-ssl-tls]: https://ballerina.io/learn/by-example/grpc-service-ssl-tls.html\n[bbe-grpc-service-mutual-ssl]: https://ballerina.io/learn/by-example/grpc-service-mutual-ssl.html\n[bbe-grpc-service-basic-auth-file]: https://ballerina.io/learn/by-example/grpc-service-basic-auth-file-user-store.html\n[bbe-grpc-service-basic-auth-ldap]: https://ballerina.io/learn/by-example/grpc-service-basic-auth-ldap-user-store.html\n[bbe-grpc-service-jwt-auth]: https://ballerina.io/learn/by-example/grpc-service-jwt-auth.html\n[bbe-grpc-service-oauth2]: https://ballerina.io/learn/by-example/grpc-service-oauth2.html\n[bbe-grpc-client-ssl-tls]: https://ballerina.io/learn/by-example/grpc-client-ssl-tls.html\n[bbe-grpc-client-mutual-ssl]: https://ballerina.io/learn/by-example/grpc-client-mutual-ssl.html\n[bbe-grpc-client-basic-auth]: https://ballerina.io/learn/by-example/grpc-client-basic-auth.html\n[bbe-grpc-client-bearer-token-auth]: https://ballerina.io/learn/by-example/grpc-client-bearer-token-auth.html\n[bbe-grpc-client-self-signed-jwt-auth]: https://ballerina.io/learn/by-example/grpc-client-self-signed-jwt-auth.html\n[bbe-grpc-client-oauth2-client-credentials-grant]: https://ballerina.io/learn/by-example/grpc-client-oauth2-client-credentials-grant-type.html\n[bbe-grpc-client-oauth2-password-grant]: https://ballerina.io/learn/by-example/grpc-client-oauth2-password-grant-type.html\n[bbe-grpc-client-oauth2-refresh-token-grant]: https://ballerina.io/learn/by-example/grpc-client-oauth2-refresh-token-grant-type.html\n[bbe-grpc-client-oauth2-jwt-bearer-grant]: https://ballerina.io/learn/by-example/grpc-client-oauth2-jwt-bearer-grant-type.html\n\n[bbe-kafka-consumer-sasl]: https://ballerina.io/learn/by-example/kafka-authentication-sasl-plain-consumer.html\n[bbe-kafka-producer-sasl]: https://ballerina.io/learn/by-example/kafka-authentication-sasl-plain-producer.html\n[bbe-rabbitmq-security]: https://ballerina.io/learn/by-example/rabbitmq-secure-connection.html\n[bbe-nats-security]: https://ballerina.io/learn/by-example/nats-basic-secure-connection.html\n[bbe-stan-security]: https://ballerina.io/learn/by-example/nats-streaming-secure-connection.html\n\n[bbe-tcp-ssl-tls]: https://ballerina.io/learn/by-example/tcp-transport-security.html\n\n[bbe-ftp-listener-sftp]: https://ballerina.io/learn/by-example/sftp-listener.html\n[bbe-ftp-client-sftp]: https://ballerina.io/learn/by-example/sftp-client.html\n\n[ballerina-central-logo]: ./_resources/images/ballerina-central-logo.svg\n[ballerina-docs-logo]: ./_resources/images/ballerina-docs-logo.svg\n[ballerina-bbe-logo]: ./_resources/images/ballerina-bbe-logo.svg\n\n[ballerina-security-logo]: ./_resources/images/ballerina-security.png\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fldclakmal%2Fballerina-security","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fldclakmal%2Fballerina-security","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fldclakmal%2Fballerina-security/lists"}