Open link in a new tab

Content

Expand project menu

VK ID Authentication plugin for OpenProject (openproject_vk_id)

Hi everyone,

I'd like to share a small plugin I've built: VK ID authentication for OpenProject.

VK ID (id.vk.ru) is the identity platform of VK, the largest social network in Russia and CIS — widely used by companies in the region. VK ID speaks "almost standard" OpenID Connect, but with a few deviations that prevent the stock OpenProject OIDC provider from working with it:

  • no public .well-known/openid-configuration discovery document;

  • mandatory PKCE (S256);

  • an extra device_id parameter during token exchange;

  • a non-standard userinfo endpoint.

openproject_vk_id is a lightweight compatibility layer (pure plugin, no core patches) that fixes all of this:

  • static metadata injection for id.vk.ru — the provider activates right away;

  • custom OmniAuth request/callback phases with full PKCE and device_id support;

  • flexible login mapping: phone, email, user_id, or any [custom_field] from the VK profile;

  • clean logout handling;

  • detailed flow logging for troubleshooting.

Compatibility

  • OpenProject 17.x (tested on 17.6.0)

  • Works alongside any other OIDC providers — the patch only activates for VK ID.

Screenshots

Login page with the VK ID button: login-page-vk-id.png

Provider endpoints auto-filled by the plugin: config-step2-endpoints.png

 

Plugin listed in Administration → Plugins: `plugins-list.png`


Installation (Docker)

FROM openproject/openproject:17
RUN echo 'gem "openproject_vk_id", "~> 1.1"' >> Gemfile.plugins && bundle install

Then add a provider under Administration → Authentication → OpenID Connect with metadata URL https://id.vk.ru — that's it.

The plugin is GPL-3.0, just like OpenProject itself. Issues and PRs are welcome — and if the plugin saves you time, there's a donation link in the README. 🙂

Hope it's useful for teams in the VK ecosystem. Feedback appreciated!