Hi there..
I've been working on a spec for GSSAPI on Go similar to RFC2744 and RFC2853 for C and Java. I have a working implementation of the described interface and a provider that wraps the MIT & Heimdal C libraries. The idea is to provide an idomatic interface for Go developers that supports multiple providers (like the C provider or a pure Go provider at some point).
I would love some feedback before launching this on the world! It is currently in beta, and the docs/code are at:
The interface spec: https://github.com/golang-auth/go-gssapi/wiki
.. and the code for the interface and provider register: https://github.com/golang-auth/go-gssapi
And the C provider: https://github.com/golang-auth/go-gssapi-c
I know the C folks probably won't be keen on the more OO approach - would
be interested to know how people think this compares with the Java
interface though and whether there have been any issues to be aware of with this approach.
Many thanks!
https://github.com/pythongssapi/python-gssapi (and its documentation)
to see how we did split things between a higher level and a lower
level (raw) API.
I would strongly suggest you implement the CredStore extension
(original project:
https://k5wiki.kerberos.org/wiki/Projects/Credential_Store_extensions
) as it makes some use case much easier to deal with than trying to
manually juggle credentials, with less side effects.
And as Michael mentioned, I would strongly suggest avoiding trying toI agree that a pure-Go implementation is likely never going to be
build a native implementation, it would be a huge time-sink with hard
to achieve maturity.
judge the API if you had a code example of a full GSSAPI context establishment loop on the client and on the server side separately.
Error handling and continuations being important to get right to be
usable in real scenario.
* Have you looked into py-gssapi? It is a very clean, yet convenient
wrapper your C GSS-API. I have been using it at low-level and high-level
with please without the need to resort to C?
introduced in the C API in the past decade. There is now also an ExtendedJGSSContext you might want to check.Thanks that's useful info - I didn't know about the extended context and
* You should write to security-dev at openjdk mailing list and ask Max (Weijun Wang). He is the lead guy for JGSS impl at Oracle. Feel free to mention my name.
https://github.com/curl/curl/issues/19109. This might be interesting forThat is interesting - why would you enable channel bindings by default. I
you.
Kerberos 1.22.1 in the base system for 15. You might want to check that.Great news and about to install a FBSD 15 system to test with, thanks!
py-requests-gssapi to authenticate via SPENGO?Yes I've already used it for that purpose. But I think its not a bad idea
comes for free, I have seen that you provide LDAP examples as well, how trivial is it to make this happen in the Go impl too? This might get interesting for us as well (LDAP calls to Active Directory)?So I wrote a very bare bones SASL library for Go a number of years ago that
change and fiddle with the Subject between threads in a thread poolThat is also the approach to the old pure-go Kerberos implemetation. I did write a patch
executor while MIT Kerberos does this nicely either with a file-based or KCM-based cache. The Java approach leads to more code or a cache
per-thread which is slow to populate.
I would guess that the vast majority of applications making use of
GSSAPI probably use a small subset of the functionality
and probably a very large percentage of users still use a file based credential cache. So a cut-down less complete provider might be of
benefit for those folks esp. those who just won't use C bindings to
anything. Honestly I think I would focus on a decent SASL
implemementation before thinking about any of that though.
Java's ticket cache is pure memory which means pure crap. I need to
change and fiddle with the Subject between threads in a thread pool
executor while MIT Kerberos does this nicely either with a file-based or KCM-based cache. The Java approach leads to more code or a cache
per-thread which is slow to populate.
| Sysop: | Amessyroom |
|---|---|
| Location: | Fayetteville, NC |
| Users: | 54 |
| Nodes: | 6 (0 / 6) |
| Uptime: | 12:20:58 |
| Calls: | 742 |
| Files: | 1,218 |
| D/L today: |
2 files (2,024K bytes) |
| Messages: | 183,175 |
| Posted today: | 1 |