home.social

#oauth — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #oauth, aggregated by home.social.

fetched live
  1. An access token issued for Service A should not quietly become a credential for Services B and C. This hands-on Quarkus example exchanges the user token at every hop, validates each audience, and proves the failure paths against Keycloak 26.7.

    the-main-thread.com/p/quarkus-

    #Quarkus #OAuth #Keycloak #Security

  2. Как мы прогоняли свой OpenID-сервер через официальный conformance-suite и что он в нас нашёл

    Прогон OIDF conformance-suite по redb.Identity: как настроить сьют, почему кликали вручную, и какие реальные баги он нашёл, включая утечку телефона в id_token. Мы были уверены, что profile -claims в нашем OpenID-сервере отдаются правильно. Юнит-тесты зелёные, демо-прогон зелёный, ручная проверка через curl показывала name , family_name , email , всё на месте. Потом мы прогнали сервер через официальный conformance-suite OpenID Foundation, и он показал, что телефон и адрес пользователя лежат в id_token . А id_token уходит третьим сторонам и пишется в логи как доказательство входа. То есть номер телефона пользователя ездил гораздо дальше, чем клиент вообще запрашивал. Это утечка PII, и никакой наш тест её не ловил, потому что мы не знали, что искать. Про это и статья: как устроен ...

    habr.com/ru/articles/1073096/

    #dotnet #oauth #openidconnect #security #conformance

  3. Lokksmith 2.0 is out! 🎉
    Thanks to our contributors, persisted state (tokens, etc.) is now encrypted at rest. Tokens have always lived in app-protected storage — this closes a small remaining gap when cloud backups are enabled or on rooted devices.

    github.com/svenjacobs/lokksmit

    #Lokksmith #OIDC #OpenID #OAuth #Android #iOS #Kotlin #KotlinMultiplatform #KMP

  4. Russian hackers hijack EU accounts via Google OAuth. Lock down auth flows!

    #OAuth #CyberEspionage #EU

  5. If you're keeping up with #oauth and #app #security, our resident specifications expert, Joe DeCock, summarizes the standards landscape as of summer 2026.

    duendesoftware.com/blog/202608

    #dotnet #aspnetcore

  6. Законный вход в Telegram через РФ сервисы на примере личного проекта

    Готовое решение в статье — как реализовать вход в Telegram через РФ сервисы: VK ID, Яндекс ID и MAX. Мы в своём проекте оставили Telegram как удобную точку входа и канал доставки, а саму идентификацию вынесли в отдельные ID-сервисы. Разделили понятия: «кто пользователь» — это identity, «куда ему слать уведомления» — channel identity. Человек входит через VK ID, Яндекс ID или MAX, а его telegram_id потом просто привязывается к аккаунту для отправки ленты. Не для входа.

    habr.com/ru/articles/1072284/

    #Telegram_Mini_Apps #OAuth #VK_ID #Яндекс_ID #MAX #авторизация #идентификация #telegram #mini_apps #pwa

  7. Законный вход в Telegram через РФ сервисы на примере проекта: «Моя АнтиСоцсеть»

    Готовое решение в статье — как реализовать вход в Telegram через РФ сервисы: VK ID, Яндекс ID и MAX. Мы оставили Telegram как удобную точку входа и канал доставки, а идентификацию вынесли в отдельные ID-сервисы. Идея простая: разделить «кто пользователь» (identity) и «куда ему слать уведомления» (channel identity). Пользователь авторизуется через VK ID, Яндекс ID или MAX, а telegram_id позже привязывается к его аккаунту исключительно для отправки ленты — не для входа.

    habr.com/ru/articles/1072068/

    #Telegram_Mini_Apps #OAuth #VK_ID #Яндекс_ID #MAX #авторизация #идентификация #telegram #mini_apps #pwa

  8. I've really loved #authentik but over time, it growed beyond the needs of someone running just some services in his #homelab. Then I stumbled upon #PocketID and discovered that - ditching passwords and only focusing on #passkeys - this one matched my needs in terms of speed, standards and flexibility even more.

    Check it out at https://pocket-id.org - it's easy to deploy and even more easier to deal with. Great, modern application supporting #OpenID Connect and #OAuth 2.0!

    Solutions like authentik or Keycloak are still great but - at least in my case -rather taking a sledgehammer to crack a nut but hey - home is no Enterprise!

    @homelab @homelab_de

  9. @fentiger

    just btw;
    I hope, all of this will make my IndieWebCamp Brighton demo of broken registerProtocolHandlers obsolete :)
    youtube.com/live/W70wd56i0Bg?t

    @jaffathecake
    Once I had BrowserId then the renamed Persona then WebId and now it is developer.mozilla.org/de/docs/ I suppose.
    Demos fedcm-demo-rp.dev/menu
    Some articles said that Firefox will ship it in 2025 / 2026 - is that still true ?

    #indieweb #indieauth #activitypub #federation #oauth

  10. Currently implementing the Federated Credential Management API
    w3c-fedid.github.io/FedCM/

    Flow and Benefits
    corbado.com/blog/fedcm-federat

    Funny Quote
    „Axel Springer (Welt, Bild): German media giant with full FedCM deployment:
    - 14x increase in monthly registrations after implementing FedCM“

    #FedCM #OAuth #cimd #ActivityPub #fedidev

  11. With the #OAuth server capability you can now even add Part-DB's #MCP server as remote MCP server in #ai clients like #claude or #chatgpt. No need to fiddle with configuration files and you can ask the Claude app on your smartphone questions about which parts you have in stock and where you can find it.

    #opensource #selfhosted #selfhosting #web #symfony #php

  12. 🎉 Part-DB 2.15 was released - It introduces stricter database validations for SQLite and a #OAuth Server capabilities, so that applications using #API and #MCP clients can quickly authenticate with your Part-DB instance without requiring users to generate API tokens manually.

    See full release notes on #github: github.com/Part-DB/Part-DB-ser

    #opensource #electronics #makerspace #maker #hackerspace #selfhosted

  13. I was really happy to see @benpate and @dansup exploring similar ideas at the last FediCon: reducing user friction and making onboarding to the Fediverse almost invisible.

    I’ve been working along the same lines. Here’s a small example: a user can interact with a #BadgeFed instance by simply logging in with #LinkedIn or #GitHub.

    They can comment, upload images, like, boost, etc. They don’t need to know what the Fediverse is, what an instance is, or what software is running underneath.

    For them, it’s just a social app.

    Of course, existing Fediverse users can still connect with their Mastodon account or use their preferred Fediverse software.

    Under the hood, it’s a #GoToSocial account configured with LinkedIn/GitHub OIDC OAuth.

    But to the user? Completely transparent.

    I think this kind of invisible complexity is one of the ways we can make the Fediverse much more approachable without sacrificing interoperability.

    #Fediverse #ActivityPub #Mastodon #OpenWeb #Decentralization #OAuth

  14. Подключил 18 провайдеров входа и понял, что стандарт OAuth не соблюдает почти никто

    Есть спецификация OAuth 2.0. Есть OpenID Connect поверх неё. Обеим много лет, по ним написаны десятки библиотек. Казалось бы, подключить кнопку «Войти через» — дело на полчаса. Так это выглядит ровно до второго провайдера. Я собрал единую точку входа на 18 провайдеров и 26 способов авторизации — от VK и Сбера до Telegram и Steam. 18 провайдеров, 26 способов входа. И почти каждый соблюдает стандарт по-своему. VK требует device_id и state в теле обмена токена — в спецификации их нет. Сбер хочет уникальный заголовок RqUID в каждом запросе. Яндекс работает не по OIDC и использует заголовок OAuth вместо Bearer. Apple выдаёт вместо client_secret самоподписанный JWT со сроком жизни в полгода. Steam до сих пор на OpenID 2.0 — протоколе, который устарел десять лет назад. А ЕСИА вообще требует ГОСТ-подпись и CryptoPro. Отдельная глава — Telegram. Это три несовместимых механизма под одним именем: OIDC, Login Widget с HMAC-проверкой и Mini App с двойным HMAC. Свести их так, чтобы один человек оставался одним пользователем независимо от способа входа, оказалось самой муторной частью проекта. Внутри: полный каталог отклонений от стандарта по всем провайдерам, разбор того, где живёт нестандартность (спойлер: чем ближе к банку или государству, тем дальше от стандарта), и чеклист, если будете подключать больше двух-трёх провайдеров сами.

    habr.com/ru/articles/1061682/

    #OAuth #OpenID_Connect #авторизация #VK_ID #Telegram_Login #Сбер_ID #аутентификация #single_signon #API #российские_сервисы

  15. I'm implementing OAuth support for ATProto for a project, and wow...

    It's almost like they chose all of the most esoteric RFCs (and still don't have granular scopes). This makes me very much appreciate how comparatively simple Mastodon makes this.

    #Bluesky #ATProto #OAuth

  16. Using GoToSocial as the Social Layer for Your Apps

    Summary: How GoToSocial can provide identity, federation, and social features inside existing applications without requiring users to create and manage another account.

    Using GoToSocial as the Social Layer for Your Apps

    I have been experimenting with GoToSocial as an identity and social layer for my applications. The goal is simple: let people use social features inside an app without asking them to understand the Fediverse first, create several accounts, or jump between websites to interact.

    This post is the background and, more importantly, the why. The next parts will get into the implementation.

    You may know me as the person who does weird things with the Fediverse: implementing ActivityPub on a static site, combining badges with federation in BadgeFed, or building a Fediverse link-in-bio service at FediProfile. Well, I have another experiment. Buckle up.

    The path to this problem

    Some time ago, I created a social media management app named VocalCat. It had limited success, but it was my first production-grade side project in a long time. I built it with .NET, Blazor, and PostgreSQL. The stack scaled nicely, so I kept using it. My ActivityPub implementation for static sites used mostly the same tools, with SQLite added to the mix.

    Then I created BadgeFed.

    BadgeFed combines ActivityPub and Open Badges to add social and decentralized layers to digital credentials. I have talked about it at FOSDEM, LinuxFest Northwest, and FediCon. You can see it running at badgefed.org, and communitycredentials.org has moved beyond being only a proof of concept.

    The decentralized layer is relatively straightforward: an Open Badge is placed inside an ActivityPub object that can travel across instances and different Fediverse software.

    The social layer follows naturally:

    • Issuers are ActivityPub actors, so people can follow them.
    • Badges and awards are ActivityPub notes, so people can like, boost, share, and comment on them.
    • In practice, people can follow issuers and receive their badges through the social web.

    That worked, but it exposed a different problem.

    The wallet I did not want to build

    I deliberately avoided creating a wallet inside BadgeFed. I wanted other people and communities to create wallets instead. Maybe that was naive, but the point of decentralizing badges is to avoid one central application owning the entire experience.

    That works in theory, especially for people already familiar with the Fediverse. In reality, BadgeFed and Community Credentials are most useful to people who are neither technical nor existing Fediverse users. They kept asking for a wallet.

    I still did not want to put one directly into BadgeFed, so I created FediProfile. It looks like a Fediverse link-in-bio page, but it was also a pretext for building a wallet.

    In FediProfile, you can add as many links as you want. The profile is itself an ActivityPub actor, so people can follow it. When one of its social links is also an ActivityPub account, such as a Pixelfed or Mastodon account, the profile can boost content from that account. This gives other people one place to follow your work across multiple services.

    The less obvious purpose was badge collection. Badges can be issued to profile URLs, so a profile that already connects someone's social accounts is also a natural place to receive and display credentials.

    It worked. FediProfile is no longer just a proof of concept; it is a wallet that does not look like a wallet. You can create an account at hub.vocalcat.com.

    The multiple-account problem

    Then @johannab arrived with some very good ideas about using Fediverse software to empower communities. Those conversations brought a practical question into focus: how do we prevent people from creating a new account for every piece of software they want to use?

    Today, someone may create a Pixelfed account for photos, a Mastodon account for short posts, and a Lemmy account for communities. People who already understand federation may accept that model. Everyone else gets confused. This is not a theoretical problem; I have watched it happen.

    There are several efforts to provide a more portable identity, and Bluesky has done interesting work with DIDs. But I kept returning to a narrower question: what can we build right now with the software and protocols already available?

    Reducing login friction

    One lesson from VocalCat was to avoid making people create another password whenever possible. VocalCat allowed people to sign in with Google, LinkedIn, Mastodon, or GitHub through their respective OAuth flows.

    I carried that approach into BadgeFed and FediProfile. People can sign in using a Mastodon or GoToSocial account, or with LinkedIn. Community Credentials was designed for people outside the Fediverse, so its account friction needs to be close to zero. When I eventually added a wallet there, I reused the same login.

    Authentication was only one part of the friction, though.

    Bringing interactions into BadgeFed

    Interacting with a BadgeFed credential was still cumbersome. A person had to copy its URL, open a Fediverse client, resolve the URL, and then comment, like, or boost it. That is possible, but it is not a good default workflow for someone who does not already live in Mastodon.

    So I tried a different approach: what if BadgeFed included the relevant parts of a Mastodon client?

    I implemented that, and you can try it at badgefed.org. After signing in, BadgeFed uses the person's OAuth token to call the Mastodon API. They can reply to, like, or boost a credential without copying its URL into another application. They can even upload images.

    The credential is still federated, and software beyond Mastodon can still interact with it through ActivityPub. The difference is that the user does not need to leave BadgeFed to participate.

    This creates a social layer for digital credentials without isolating the conversation inside one platform, as happens with traditional credential platforms and professional networks. Honestly, it is one of the coolest things I have built recently. I know, I say that often.

    The missing account

    The embedded client solved the workflow for someone who already had a compatible Fediverse account. I wanted to go further: what about a person who does not have one?

    My ideal flow looks like this:

    1. A person signs in to BadgeFed or Community Credentials using an account they already have.
    2. They enable social features with one setting.
    3. The system provisions the social account they need.
    4. They can immediately reply to, like, and boost credentials inside the application.

    They should not need prior knowledge of ActivityPub or the Fediverse, but the resulting account and interactions should still participate in the open social web.

    I expected this to become a long journey through Go, the GoToSocial codebase, and probably a custom fork.

    GoToSocial surprised me. I did not need to begin with its codebase; I needed to read its documentation. GoToSocial supports OpenID Connect and can use an external identity provider for sign-in and account provisioning. That covered the central capability I thought I would need to build myself.

    It is not completely invisible provisioning. On the first login, GoToSocial asks the person to confirm a username, which cannot later be changed because it becomes part of their ActivityPub identity. The identity provider must also return a unique, non-empty email claim. That is still some friction, but it is very different from asking someone to create and manage another set of credentials.

    Why GoToSocial changes the design

    The important part is not only that users can avoid another password. GoToSocial can provide the social server behind an application while the application provides the experience appropriate to its own community.

    That changes the responsibility split:

    • The application owns its domain-specific interface and workflows.
    • The identity provider handles the user's existing sign-in.
    • GoToSocial provides ActivityPub federation and Mastodon-compatible APIs.
    • Users interact from the application instead of learning a separate social client first.

    It also means I do not need to implement an ActivityPub server, federation behavior, moderation primitives, storage management, or blocklist support directly inside every application. There will still be integration and operational work, and I do not yet know every limitation. But this is a much smaller and more maintainable problem than building or forking a social server for each product.

    What this series will cover

    This series will explore how to use GoToSocial to add social features to other software. The implementation goal is not to hide the Fediverse forever. It is to make the first interaction simple enough that people can discover its benefits by using it.

    The next posts will cover:

    1. Configuring GoToSocial with an external OpenID Connect provider.
    2. Provisioning or connecting accounts with minimal user action.
    3. Using the Mastodon-compatible API from an existing application.
    4. The moderation, security, consent, and account-lifecycle questions that appear once the happy path works.

    I did not expect my static-site ActivityPub guide to reach nine parts. I expect this one to take two or three, but we will see. The first practical milestone is straightforward: sign in to an existing application, enable its social features, and interact without creating and managing another password.

    That is what we will build next. Thanks for reading.

    Also readable in: https://maho.dev/2026/08/using-gotosocial-as-the-social-layer-for-your-apps/ by @mapache:

    #GoToSocial #ActivityPub #Fediverse #OpenID Connect #OAuth #Social Web #BadgeFed #FediProfile

  17. Переписал CRest от Битрикса с нуля: гонки токенов, даунтаймы и мультипортальность, которых нет в стоке

    У Битрикса есть официальная обёртка для REST API — класс CRest, который лежит в каждом примере приложения и который все копируют к себе в проект. Он умещается в один файл и работает — ровно до того момента, пока приложение не выходит в реальную эксплуатацию с несколькими порталами и фоновыми воркерами. Один баг стокового CRest однажды стоил мне шести суток простоя приложения, и причина была в одной строке: file_put_contents без блокировки. При обрыве записи settings.json оставался обрезанным, парсинг JSON падал, и приложение считало себя неустановленным — переставало отвечать на события и затирало валидные токены. Я переписал CRest с нуля под то, как приложения Bitrix24 работают на самом деле: — атомарная запись через rename() вместо file_put_contents — читатель видит либо старый файл целиком, либо новый, обрезка невозможна физически; — гонкоустойчивый refresh: одноразовый refresh_token больше не сжигается дважды, когда два воркера одновременно ловят протухший токен; — ключ портала — member_id, а не домен, поэтому переезд портала на другой домен больше не теряет токены; — drop-in совместимость со стоковым CRest: меняется одна строка use, весь остальной код остаётся как есть. Ноль зависимостей, PHP 8.1, работает на любом шареде и коробке — в отличие от официального b24phpsdk с его symfony-стеком. Разбираю каждую граблю с кодом, показываю, чем это чинится, и честно очерчиваю нишу: типизированные обёртки по методам API — territory официального SDK, у меня их осознанно нет. Исходный код открыт.

    habr.com/ru/articles/1061694/

    #Bitrix24 #CRest #PHP #SDK #OAuth #REST_API #мультитенантность #refresh_token #атомарная_запись #Битрикс24

  18. Почему кнопка «Войти через VK» заняла три дня. Кейс

    На первый взгляд, Social Login — одна из самых простых функций современного веб-приложения. Добавить кнопку «Войти через VK». Добавить кнопку «Войти через Яндекс». OAuth 2.0 давно стандартизирован, OpenID Connect тоже. Документации и библиотек полно. Да и AI сегодня умеет писать интеграции быстрее человека. Поэтому, когда я решил добавить VK ID и Яндекс ID в Авторизу, честно рассчитывал уложиться в один рабочий день: Свою систему знаю. OIDC знаю. Подобные интеграции раньше проектировал. Под рукой ChatGPT, Claude и AI-агенты. Что вообще может пойти не так? Спойлер: получилось почти три дня. И самой сложной частью оказался не OAuth. День первый. Самоуверенность

    habr.com/ru/articles/1065576/

    #Авторизация #Аутентификация #OAuth #openidconnect #social_login #vk_api #yandex_api #vk_id

  19. Как дать LLM-агенту доступ к Яндекс Вебмастеру: разбираем устройство MCP-сервера над чужим API

    Данные о том, как поиск видит ваш сайт, живут в интерфейсе Яндекс Вебмастера и в его API: чтобы узнать, по каким запросам показов много, а кликов нет, что выпало из индекса за месяц и что Яндекс считает проблемой сайта, человек ходит по вкладкам и сводит цифры руками, а программа собирает запросы к API v4. LLM-агент по умолчанию не умеет ни того, ни другого. Разбираю, как устроен MCP-сервер для Яндекс Вебмастера: как уложить пару десятков эндпоинтов в восемь инструментов, какие грабли у API v4 и как сделать вход в Яндекс, который агент выполняет сам — без терминала и без клиентского секрета. Как это устроено

    habr.com/ru/articles/1065014/

    #MCP #Model_Context_Protocol #LLMагенты #Яндекс_Вебмастер #Webmaster_API #OAuth #PKCE #SEO #TypeScript

  20. #ActivityPub

    Yesterday I implemented #cimd for the #OAuth and for Client-To-Server SignUp.

    Overview client.dev/
    (click the 'Explore' things for security hints)
    because github.com/swicg/activitypub-a

    Technically it is easy, just wanted a nice UI for Client-To-Server so any client can combine it with the webmanifest and servers for menschys, redaktor etc. will support the dark/light things and the properties theme_color and background_color as well …

    PS:
    For Germans the letter order in the acronym is easy to remember: It is cinnamon for the OAuth sugar [Zimt] ;)