Giter Site home page Giter Site logo

lastlogin-io / obligator Goto Github PK

View Code? Open in Web Editor NEW
657.0 3.0 14.0 337 KB

Simple and opinionated OpenID Connect server designed for self-hosters

License: MIT License

Go 82.53% Shell 1.13% Dockerfile 0.75% HTML 11.60% CSS 3.77% Python 0.22%
oidc oidc-server openid

obligator's People

Contributors

aeneasr avatar anderspitman avatar newam avatar zhming0 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

obligator's Issues

Using Obligator to protect apps

Currently I am using Authentik to protect my apps. It is too slow and I would like to use Obligator instead. As I understand it, forward auth is the needed feature for this kind of stuff. But I can't wrap my head around what settings I need to specify in my reverse proxy.

I'm using Authentik with Caddy and this setup: https://docs.goauthentik.io/docs/providers/proxy/server_caddy

This way, when someone tries to access an app, he is first redirected to an outpost, where he must login.

Please let me know if this is possible to do with Obligator

Implement refresh tokens

Similar situation to dynamic client registration. Doesn't really add anything, but it's the expected flow for other software that wants to interact with obligator. See #28.

Docker repo is 404

pull access denied for anderspitman/obligator, repository does not exist or may require 'docker login'

lastlogin.io demo sends emails with invalid magic links

I just followed the instructions at the Demo section to try the obligator instance running at lastlogin.io using my email address. After a little while I recieved the email and clicked on the link but then it goes to lastlogin.io/magic?key...... and the error message "Invalid magic link" is displayed. Hower the URL seems to be fine having a key and an instance_id.

suggestion for future consideration: WebAuthN FIDO2 (passkeys)

I have not done much digging into this project yet, but a suggestion I have after reading the readme file is in response to the blurb about sending a unique code to the email. The suggestion is to add a registration flow to confirm ownership of the email like you already are but then also allow linking that email to a FIDO2 token registration via webauthn, which is what passkeys use.

I suggest this because I use a variety of webauthn devices all the time now and I think that method of authenticating is much much better than passwords and is more convenient than clicking on a link sent to your email in my opinion. There are authenticator smartcards (my preference), USB tokens like yubikeys and the opensource derivatives, and of course now google and apple passkeys supported by the trusted platform modules or HSMs on the new phones.

[feedback] Kanidm comparison table line items

Hi there,

I'm the developer of Kanidm, I wanted to update some of your line items in the readme.

  • Simple - This is subjective, but most of our users would say "yes" to this compared to keycloak or oauth2-proxy.
  • Anonymous - No
  • Multi-domain - No
  • Email Login - No
  • HTTP API - Yes
  • Forward Auth - No (last we looked, it's insecure)
  • Header Auth - Yes
  • OIDC - Yes, we are a full OIDC server
  • SAML - No
  • MFA - Yes, including passkeys and attested passkeys
  • Rev Proxy - No
  • Admin GUI - No
  • Client Registration - No
  • Passkeys - Yes
  • Attested Passkeys - Yes, we are the only IDP that supports these today

We also have active-active replication so we support HA

Encrypt all cookies

Don't see a good reason not to, and it offers some defense in depth. At least random apps on the user's machine won't be able to snoop all their logins

TLSAuth parameter for SMTP

Actually testing your interesting software ๐Ÿ‘

At the moment it is not possible to use SMTP endpoints which require SSL/TLS encryption for sending mails (e.g. smtp.office365.com) with the docker image. Checked the code and in the struct there are no params for this use case.

It would be nice if this is possible.

Add Impersonation?

It is a pretty important feature for many within the auth / identity space. The only modern provider that seems to have support and documentation for "impersonation" is GoAuthentik - but I've not run through your full comparison table yet. Is that a feature you wouldn't mind adding to your comparison table?
Thanks!

Consider adding OpenZiti for application-embedded security

Currently the API is only offered through unix sockets. This reduces the chance that it accidentally gets exposed, which is important because it's not authenticated in any way.

Would you be open to embedding zero trust directly into the project via OpenZiti? OpenZiti allows you to have secure connectivity to the server from anywhere, via a zero trust overlay.

If that sounds interesting, I'd be happy to contribute a patch and if you're into it, demo it over on our YouTube channel too?

Refresh token support?

Is it by design or not implemented that refresh tokens aren't implemented?. I see a security.md file that states they aren't implemented, but unsure if it's more a TODO, or would conflict with the stateless nature.

From #27 I was able to get lastlogin.io working with kubectl, however the one UX pain point is it seems the id_token lasts 10 minutes.
This means I am constantly logging back in :). It seems the kubectl plugin might support getting refresh tokens without the interactivity, but as obligator doesn't return them, I think it has to go for a full authorisation flow when the token expires.

We don't issue an refresh tokens

Fix QR issues

  • Redirect to original instance when clustered
  • Expire codes after a brief time

usage with cli tools

Hi there, this has been excellent where I have gotten it working, but wondering if it can be used in cli contexts too?.

Eg kubelogin is a kubectl plugin. I tried to configure it, but it seems to start a localhost:8000 server to manipulate (probably store) the tokens on the way through. This means the redirect URLs don't match, so obligator correctly rejects.

I am trying to figure out if these flows are actually compatible. Eg a cli tool might need some interactive page, that waits for the redirect to then persist on disk. Is this a use case obligator can support?.

I don't mind writing some code, say a kubectl plugin, but I suspect this may be impossible to even achieve due to how anonymous Auth in obligator works.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.