Skip to content

Commit 34035ac

Browse files
committed
📝 Fix regressions in README
1 parent 31a8654 commit 34035ac

File tree

1 file changed

+63
-44
lines changed

1 file changed

+63
-44
lines changed

README.md

Lines changed: 63 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,18 @@
2727
[gem-server]: https://github.com/galtzo-floss/gem-server
2828
[reinteractive-podcast]: https://youtu.be/_H4qbtC5qzU?si=BvuBU90R2wAqD2E6
2929

30-
[![Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0][🖼️galtzo-i]][🖼️galtzo-discord] [![ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5][🖼️ruby-lang-i]][🖼️ruby-lang] [![omniauth-ldap Logo by Aboling0, CC BY-SA 4.0][🖼️omniauth-ldap-i]][🖼️omniauth-ldap]
30+
[![Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0][🖼️galtzo-i]][🖼️galtzo-discord] [![ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5][🖼️ruby-lang-i]][🖼️ruby-lang] [![omniauth Logo (presumed to be) by tomeara, (presumed to be) MIT License][🖼️omniauth-i]][🖼️omniauth]
3131

3232
[🖼️galtzo-i]: https://logos.galtzo.com/assets/images/galtzo-floss/avatar-192px.svg
3333
[🖼️galtzo-discord]: https://discord.gg/3qme4XHNKN
3434
[🖼️ruby-lang-i]: https://logos.galtzo.com/assets/images/ruby-lang/avatar-192px.svg
3535
[🖼️ruby-lang]: https://www.ruby-lang.org/
36-
[🖼️omniauth-ldap-i]: https://logos.galtzo.com/assets/images/omniauth/omniauth-ldap/avatar-192px.svg
37-
[🖼️omniauth-ldap]: https://github.com/omniauth/omniauth-ldap
36+
[🖼️omniauth-i]: https://logos.galtzo.com/assets/images/omniauth/avatar-192px.png
37+
[🖼️omniauth]: https://github.com/omniauth/omniauth-ldap
3838

3939
# 📁 OmniAuth LDAP
4040

41-
[![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license-ref] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![Open Source Helpers][👽oss-helpi]][👽oss-help] [![CodeCov Test Coverage][🏀codecovi]][🏀codecov] [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls] [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov] [![QLTY Maintainability][🏀qlty-mnti]][🏀qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Runtime Dependencies @ HEAD][🚎12-crh-wfi]][🚎12-crh-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Supported][🚎6-s-wfi]][🚎6-s-wf] [![CI Legacy][🚎4-lg-wfi]][🚎4-lg-wf] [![CI Unsupported][🚎7-us-wfi]][🚎7-us-wf] [![CI Ancient][🚎1-an-wfi]][🚎1-an-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] [![CodeQL][🖐codeQL-img]][🖐codeQL] [![Apache SkyWalking Eyes License Compatibility Check][🚎15-🪪-wfi]][🚎15-🪪-wf]
41+
[![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license-ref] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![Open Source Helpers][👽oss-helpi]][👽oss-help] [![CodeCov Test Coverage][🏀codecovi]][🏀codecov] [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Runtime Dependencies @ HEAD][🚎12-crh-wfi]][🚎12-crh-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Supported][🚎6-s-wfi]][🚎6-s-wf] [![CI Legacy][🚎4-lg-wfi]][🚎4-lg-wf] [![CI Unsupported][🚎7-us-wfi]][🚎7-us-wf] [![CI Ancient][🚎1-an-wfi]][🚎1-an-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] [![CodeQL][🖐codeQL-img]][🖐codeQL] [![Apache SkyWalking Eyes License Compatibility Check][🚎15-🪪-wfi]][🚎15-🪪-wf]
4242

4343
`if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][🖼️galtzo-discord], as I may have missed the [discord notification][🖼️galtzo-discord].
4444

@@ -81,6 +81,50 @@ use OmniAuth::Strategies::LDAP,
8181

8282
All of the listed options are required, with the exception of `:title`, `:name_proc`, `:bind_dn`, and `:password`.
8383

84+
### TLS certificate verification
85+
86+
This gem enables TLS certificate verification by default when you use `encryption: "ssl"` (LDAPS / simple TLS) or `encryption: "tls"` (STARTTLS). We always pass `tls_options` to Net::LDAP based on `OpenSSL::SSL::SSLContext::DEFAULT_PARAMS`, which includes `verify_mode: OpenSSL::SSL::VERIFY_PEER` and sane defaults.
87+
88+
- Secure by default: you do not need to set anything extra to verify the LDAP server certificate.
89+
- To customize trust or ciphers, supply your own `tls_options`, which are merged over the safe defaults.
90+
- If you truly need to skip verification (not recommended), set `disable_verify_certificates: true`.
91+
92+
Examples:
93+
94+
```ruby
95+
# Verify server certs (default behavior)
96+
use OmniAuth::Strategies::LDAP,
97+
host: ENV["LDAP_HOST"],
98+
port: 636,
99+
encryption: "ssl", # or "tls"
100+
base: "dc=example,dc=com",
101+
uid: "uid"
102+
103+
# Use a private CA bundle and restrict protocol/ciphers
104+
use OmniAuth::Strategies::LDAP,
105+
host: ENV["LDAP_HOST"],
106+
port: 636,
107+
encryption: "ssl",
108+
base: "dc=example,dc=com",
109+
uid: "uid",
110+
tls_options: {
111+
ca_file: "/etc/ssl/private/my_org_ca.pem",
112+
ssl_version: "TLSv1_2",
113+
ciphers: ["TLS_AES_256_GCM_SHA384", "TLS_CHACHA20_POLY1305_SHA256"],
114+
}
115+
116+
# Opt out of verification (NOT recommended – use only in trusted test/dev scenarios)
117+
use OmniAuth::Strategies::LDAP,
118+
host: ENV["LDAP_HOST"],
119+
port: 636,
120+
encryption: "ssl",
121+
base: "dc=example,dc=com",
122+
uid: "uid",
123+
disable_verify_certificates: true
124+
```
125+
126+
Note: Net::LDAP historically defaulted to no certificate validation when `tls_options` were not provided. This library mitigates that by always providing secure `tls_options` unless you explicitly disable verification.
127+
84128
## 💡 Info you can shake a stick at
85129

86130
| Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
@@ -90,8 +134,8 @@ All of the listed options are required, with the exception of `:title`, `:name_p
90134
| Works with MRI Ruby 3 | [![Ruby 3.0 Compat][💎ruby-3.0i]][🚎4-lg-wf] [![Ruby 3.1 Compat][💎ruby-3.1i]][🚎6-s-wf] [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎6-s-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎6-s-wf] [![Ruby 3.4 Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf] |
91135
| Works with MRI Ruby 2 | ![Ruby 2.0 Compat][💎ruby-2.0i] ![Ruby 2.1 Compat][💎ruby-2.1i] ![Ruby 2.2 Compat][💎ruby-2.2i] <br/> [![Ruby 2.3 Compat][💎ruby-2.3i]][🚎1-an-wf] [![Ruby 2.4 Compat][💎ruby-2.4i]][🚎1-an-wf] [![Ruby 2.5 Compat][💎ruby-2.5i]][🚎1-an-wf] [![Ruby 2.6 Compat][💎ruby-2.6i]][🚎7-us-wf] [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎7-us-wf] |
92136
| Support & Community | [![Join Me on Daily.dev's RubyFriends][✉️ruby-friends-img]][✉️ruby-friends] [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork] [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor] |
93-
| Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on CodeBerg.org][📜src-cb-img]][📜src-cb] [![Source on Github.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] |
94-
| Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![YARD on Galtzo.com][📜docs-head-rd-img]][🚎yard-head] [![Maintainer Blog][🚂maint-blog-img]][🚂maint-blog] [![GitLab Wiki][📜gl-wiki-img]][📜gl-wiki] [![GitHub Wiki][📜gh-wiki-img]][📜gh-wiki] |
137+
| Source | [![Source on Github.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] |
138+
| Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![YARD on Galtzo.com][📜docs-head-rd-img]][🚎yard-head] [![Maintainer Blog][🚂maint-blog-img]][🚂maint-blog] [![GitHub Wiki][📜gh-wiki-img]][📜gh-wiki] |
95139
| Compliance | [![License: MIT][📄license-img]][📄license-ref] [![Compatible with Apache Software Projects: Verified by SkyWalking Eyes][📄license-compat-img]][📄license-compat] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] |
96140
| Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] [![Compatibility appraised by: appraisal2][💎appraisal2-img]][💎appraisal2] |
97141
| Maintainer 🎖️ | [![Follow Me on LinkedIn][💖🖇linkedin-img]][💖🖇linkedin] [![Follow Me on Ruby.Social][💖🐘ruby-mast-img]][💖🐘ruby-mast] [![Follow Me on Bluesky][💖🦋bluesky-img]][💖🦋bluesky] [![Contact Maintainer][🚂maint-contact-img]][🚂maint-contact] [![My technical writing][💖💁🏼‍♂️devto-img]][💖💁🏼‍♂️devto] |
@@ -105,22 +149,6 @@ Compatible with MRI Ruby 2.0+, and concordant releases of JRuby, and TruffleRuby
105149
|------------------------------------------------|--------------------------------------------------------|
106150
| 👟 Check it out! |[github.com/appraisal-rb/appraisal2][💎appraisal2]|
107151

108-
### Federated DVCS
109-
110-
<details markdown="1">
111-
<summary>Find this repo on federated forges (Coming soon!)</summary>
112-
113-
| Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
114-
|-------------------------------------------------|-----------------------------------------------------------------------|---------------------------|--------------------------|---------------------------|--------------------------|------------------------------|
115-
| 🧪 [omniauth/omniauth-ldap on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix ||
116-
| 🧊 [omniauth/omniauth-ldap on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] || ⭕️ No Matrix ||
117-
| 🐙 [omniauth/omniauth-ldap on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix | [💚][gh-discussions] |
118-
| 🎮️ [Discord Server][✉️discord-invite] | [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] | [Let's][✉️discord-invite] | [talk][✉️discord-invite] | [about][✉️discord-invite] | [this][✉️discord-invite] | [library!][✉️discord-invite] |
119-
120-
</details>
121-
122-
[gh-discussions]: https://github.com/omniauth/omniauth-ldap/discussions
123-
124152
### Enterprise Support [![Tidelift](https://tidelift.com/badges/package/rubygems/omniauth-ldap)](https://tidelift.com/subscription/pkg/rubygems-omniauth-ldap?utm_source=rubygems-omniauth-ldap&utm_medium=referral&utm_campaign=readme)
125153

126154
Available as part of the Tidelift Subscription.
@@ -696,8 +724,6 @@ See [CONTRIBUTING.md][🤝contributing].
696724

697725
[![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls]
698726

699-
[![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov]
700-
701727
### 🪇 Code of Conduct
702728

703729
Everyone interacting with this project's codebases, issue trackers,
@@ -709,8 +735,6 @@ chat rooms and mailing lists agrees to follow the [![Contributor Covenant 2.1][
709735

710736
Made with [contributors-img][🖐contrib-rocks].
711737

712-
Also see GitLab Contributors: [https://gitlab.com/omniauth/omniauth-ldap/-/graphs/main][🚎contributors-gl]
713-
714738
<details>
715739
<summary>⭐️ Star History</summary>
716740

@@ -771,14 +795,20 @@ See [LICENSE.txt][📄license] for the official [Copyright Notice][📄copyright
771795

772796
<ul>
773797
<li>
774-
Copyright (c) 2023, 2025 Peter H. Boling, of
798+
Copyright (c) 2025 Peter H. Boling, of
775799
<a href="https://discord.gg/3qme4XHNKN">
776800
Galtzo.com
777801
<picture>
778802
<img src="https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px-blank.svg" alt="Galtzo.com Logo (Wordless) by Aboling0, CC BY-SA 4.0" width="24">
779803
</picture>
780804
</a>, and omniauth-ldap contributors.
781805
</li>
806+
<li>
807+
Copyright (c) 2014 David Benko
808+
</li>
809+
<li>
810+
Copyright (c) 2011 by Ping Yu and Intridea, Inc.
811+
</li>
782812
</ul>
783813

784814
## 🤑 A request for help
@@ -867,28 +897,18 @@ Thanks for RTFM. ☺️
867897
[🏙️entsup-tidelift-sonar]: https://blog.tidelift.com/tidelift-joins-sonar
868898
[💁🏼‍♂️peterboling]: http://www.peterboling.com
869899
[🚂railsbling]: http://www.railsbling.com
870-
[📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
871-
[📜src-gl]: https://gitlab.com/omniauth/omniauth-ldap/
872-
[📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
873-
[📜src-cb]: https://codeberg.org/omniauth/omniauth-ldap
874900
[📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=Github&logoColor=green
875901
[📜src-gh]: https://github.com/omniauth/omniauth-ldap
876902
[📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
877903
[📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
878-
[📜gl-wiki]: https://gitlab.com/omniauth/omniauth-ldap/-/wikis/home
879904
[📜gh-wiki]: https://github.com/omniauth/omniauth-ldap/wiki
880-
[📜gl-wiki-img]: https://img.shields.io/badge/wiki-examples-943CD2.svg?style=for-the-badge&logo=gitlab&logoColor=white
881905
[📜gh-wiki-img]: https://img.shields.io/badge/wiki-examples-943CD2.svg?style=for-the-badge&logo=github&logoColor=white
882906
[👽dl-rank]: https://bestgems.org/gems/omniauth-ldap
883907
[👽dl-ranki]: https://img.shields.io/gem/rd/omniauth-ldap.svg
884908
[👽oss-help]: https://www.codetriage.com/omniauth/omniauth-ldap
885909
[👽oss-helpi]: https://www.codetriage.com/omniauth/omniauth-ldap/badges/users.svg
886910
[👽version]: https://bestgems.org/gems/omniauth-ldap
887911
[👽versioni]: https://img.shields.io/gem/v/omniauth-ldap.svg
888-
[🏀qlty-mnt]: https://qlty.sh/gh/omniauth/projects/omniauth-ldap
889-
[🏀qlty-mnti]: https://qlty.sh/gh/omniauth/projects/omniauth-ldap/maintainability.svg
890-
[🏀qlty-cov]: https://qlty.sh/gh/omniauth/projects/omniauth-ldap/metrics/code?sort=coverageRating
891-
[🏀qlty-covi]: https://qlty.sh/gh/omniauth/projects/omniauth-ldap/coverage.svg
892912
[🏀codecov]: https://codecov.io/gh/omniauth/omniauth-ldap
893913
[🏀codecovi]: https://codecov.io/gh/omniauth/omniauth-ldap/graph/badge.svg
894914
[🏀coveralls]: https://coveralls.io/github/omniauth/omniauth-ldap?branch=main
@@ -952,17 +972,11 @@ Thanks for RTFM. ☺️
952972
[💎jruby-headi]: https://img.shields.io/badge/JRuby-HEAD-FBE742?style=for-the-badge&logo=ruby&logoColor=blue
953973
[🤝gh-issues]: https://github.com/omniauth/omniauth-ldap/issues
954974
[🤝gh-pulls]: https://github.com/omniauth/omniauth-ldap/pulls
955-
[🤝gl-issues]: https://gitlab.com/omniauth/omniauth-ldap/-/issues
956-
[🤝gl-pulls]: https://gitlab.com/omniauth/omniauth-ldap/-/merge_requests
957-
[🤝cb-issues]: https://codeberg.org/omniauth/omniauth-ldap/issues
958-
[🤝cb-pulls]: https://codeberg.org/omniauth/omniauth-ldap/pulls
959-
[🤝cb-donate]: https://donate.codeberg.org/
960975
[🤝contributing]: CONTRIBUTING.md
961976
[🏀codecov-g]: https://codecov.io/gh/omniauth/omniauth-ldap/graphs/tree.svg
962977
[🖐contrib-rocks]: https://contrib.rocks
963978
[🖐contributors]: https://github.com/omniauth/omniauth-ldap/graphs/contributors
964979
[🖐contributors-img]: https://contrib.rocks/image?repo=omniauth/omniauth-ldap
965-
[🚎contributors-gl]: https://gitlab.com/omniauth/omniauth-ldap/-/graphs/main
966980
[🪇conduct]: CODE_OF_CONDUCT.md
967981
[🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-259D6C.svg
968982
[📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
@@ -976,7 +990,7 @@ Thanks for RTFM. ☺️
976990
[📌gitmoji]: https://gitmoji.dev
977991
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
978992
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
979-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-4.076-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
993+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-0.297-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
980994
[🔐security]: SECURITY.md
981995
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
982996
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -996,3 +1010,8 @@ Thanks for RTFM. ☺️
9961010
[💎appraisal2]: https://github.com/appraisal-rb/appraisal2
9971011
[💎appraisal2-img]: https://img.shields.io/badge/appraised_by-appraisal2-34495e.svg?plastic&logo=ruby&logoColor=white
9981012
[💎d-in-dvcs]: https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/
1013+
1014+
[//]: # (LDAP RFC references)
1015+
[rfc4511]: https://datatracker.ietf.org/doc/html/rfc4511
1016+
[rfc4514]: https://datatracker.ietf.org/doc/html/rfc4514
1017+
[rfc4519]: https://datatracker.ietf.org/doc/html/rfc4519

0 commit comments

Comments
 (0)