[FEAT] Please provide authentication via IndieAuth #1692
Etiketler
Etiket Yok
arch
riscv64
backport/v1.19
backport/v1.20
backport/v1.21/forgejo
backport/v10.0/forgejo
backport/v11.0/forgejo
backport/v12.0/forgejo
backport/v13.0/forgejo
backport/v14.0/forgejo
backport/v15.0/forgejo
backport/v7.0/forgejo
backport/v8.0/forgejo
backport/v9.0/forgejo
breaking
bug
bug
confirmed
bug
duplicate
bug
needs-more-info
bug
new-report
bug
reported-upstream
code/actions
code/api
code/auth
code/auth/faidp
code/auth/farp
code/email
code/federation
code/git
code/migrations
code/packages
code/wiki
database
MySQL
database
PostgreSQL
database
SQLite
dependency-upgrade
dependency
Chi
dependency
Chroma
dependency
F3
dependency
ForgeFed
dependency
garage
dependency
Gitea
dependency
Golang
Discussion
duplicate
enhancement/feature
forgejo/accessibility
forgejo/branding
forgejo/ci
forgejo/commit-graph
forgejo/documentation
forgejo/furnace cleanup
forgejo/i18n
forgejo/interop
forgejo/moderation
forgejo/privacy
forgejo/release
forgejo/scaling
forgejo/security
forgejo/ui
Gain
High
Gain
Nice to have
Gain
Undefined
Gain
Very High
good first issue
i18n/backport-stable
impact
large
impact
medium
impact
small
impact
unknown
Incompatible license
issue
closed
issue
do-not-exist-yet
issue
open
manual test
Manually tested during feature freeze
OS
FreeBSD
OS
Linux
OS
macOS
OS
Windows
problem
QA
regression
release blocker
Release Cycle
Feature Freeze
release-blocker
v7.0
release-blocker
v7.0.1
release-blocker
v7.0.2
release-blocker
v7.0.3
release-blocker
v7.0.4
release-blocker
v8.0.0
release-blocker/v9.0.0
run-all-playwright-tests
run-end-to-end-tests
stage
2-research
stage
3-design
stage
4-implementation
test
manual
test
needed
test
needs-help
test
not-needed
test
present
untested
User research - time-tracker
valuable code
worth a release-note
User research - Accessibility
User research - Blocked
User research - Community
User research - Config (instance)
User research - Errors
User research - Filters
User research - Future backlog
User research - Git workflow
User research - Labels
User research - Moderation
User research - Needs input
User research - Notifications/Dashboard
User research - Rendering
User research - Repo creation
User research - Repo units
User research - Security
User research - Settings (in-app)
Kilometre Taşı Yok
Proje yok
Atanan Kişi Yok
4 katılımcı
Bildirimler
Bitiş Tarihi
Bitiş tarihi atanmadı.
Bağımlılıklar
Bağımlılık yok.
Referans
forgejo/forgejo#1692
Yükleniyor…
Tablo ekle
Bağlantı ekle
Yeni konuda referans
Herhangi bir açıklama sağlanmadı.
"%!s()" Dalını Sil
Bir dalı silmek kalıcıdır. Her ne kadar silinen dal tamamen kaldırılana kadar çok kısa bir süre yaşamını sürdürse de, çoğu durumda bu işlem GERİ ALINAMAZ. Devam edilsin mi?
Dependency references
Needs and benefits
It seems to me that the IndieAuth authentication protocol is a very good fit to add to Forgejo. I think this is a good way to help move away from signing in via GitHub, GitLab, GitTea etc.
Feature Description
This should be pretty straightforward. I believe IndieAuth works similarly to the existing authentication options (OAuth I'm guessing). You present a text field into which someone can enter a URL. That URL is followed to find the authentication endpoint. The user authenticates with their own domain in however manner they have set up. Successful authentication redirects back to the running Forgejo instance along with an access token.
So I read the webpage and I'm still left figuring out how this is different from OpenID (Connect) in which also a URL is given (usually to your own site) and then black magic happens to authorize it.
IndieAuth is decentralized (as was the original OpenID). The login name is a URL, often of a personal website. OIDC uses siloed providers (eg Google, GitHub, Codeberg) and the relying party must specifically whitelist each provider.
So for example, I can log into https://indieweb.org/ using my personal website as an identity, whereas if I want to log into https://code.forgejo.org/ I can only use Codeberg as an identity provider.
Thanks for answering caesar. I actually didn't know anything about OpenID. I had only just recently stumbled upon IndieAuth, and thought that was a great idea. There's a simple PHP script that anyone can add to their web site and instantly have their own authentication mechanism.
I've installed Forgejo and I was surprised that my installation includes an OpenID tab which allows me to enter a URL. Surprised, because the demo Forgejo instance does not provide that. I wanted to check first before opening this feature request.
If there is any value in what is said at indieweb.org, then these links regarding OpenID might be useful.
First, at the to of the page:
OpenID
There are more issues regarding OpenID under OpenID Criticism and Why not OpenID.
Regardless, I might try to install OpenID on my web site as I have set up IndieAuth, and see if I can use it with Forgejo. But I must say, if the complexity of OpenID as claimed on IndieWeb is to be believed, it contrasts quite unfavorably as setting up IndieAuth was extremely simple.
There's one question I forgot to ask. If Forgejo already supports OpenID, why isn't this option available when logging into either the Forgejo demo server, or Codeberg? If I can get Forgejo working with some protocol that allows me to own my credentials, that's great. But it seems to me it would be much better if such a thing were promoted by these hosting services, and it seems like this concept is very much in line with what prompted the creation of Forgejo in the first place.
Here is some more information I have found at SimpleID. This is an OpenID (Connect) provider. It is much more complex to install, and I am not sure my web server has the required software to support it.
Given the mentioned complexity, I am suspecting that Forgejo does not implement the requirements. In addition, I also suspect the reason the Forgejo demo server and Codeberg do not expose the OpenID tab is because to use it requires setting up certificates exchanged between these services and the OpenID Connect provider before it will work (unless implementing the above three items).
I think this is what caesar is talking about with respect to silos. The difficulty with setting up additional OpenID Connect providers makes it impossible for everyone to just run one and have authentication automatically passed to and be trusted by it. So, instead a small subset of providers are selected, the service you wish to log in to sets up connections to those providers once, and that is all you are allowed to use.
Where IndieAuth differs is that it is extremely easy to set up on a webmaster's web site. It provides only one ID. So instead of having a few providers providing thousands of IDs, you have thousands of providers providing one ID.
So first of all, Codeberg doesn't have it enabled as it also comes with responsibility to have it tested first and be able to handle it at scale (as well to not allow a new attack vector for spammers), it has been discussed. As for why Forgejo's demo server doesn't have it enabled, it's not a feature enabled by default and nobody asked for it to be enabled so far.
There's a lot of information now in this thread that's bit too much for someone that isn't really close with OpenID specification and how it's implementation in Forgejo, so I guess this is great for UX research to understand this @dachary
There is no evidence that users need this feature; after all IndieAuth is quite niche. However, I think this is a case where we need to decide what we want to promote to users. Anyone interested in this is probably welcome to pick this up. But I doubt that Forgejo contributors will get to doing the work.
I'm closing this issue, because it has been labelled with Gain/Undefined for a while. If you want to revive the discussion, please help us understand how this affects more users, or by finding a solution that solves other problems as well.