The most scalable and customizable identity server on the market. Replace your Homegrown, Auth0, Okta, Firebase with better UX and DX. Has all the tablestakes: Passkeys, Social Sign In, Multi-Factor Auth, SMS, SAML, TOTP, and more. Written in Go, cloud native, headless, API-first. Available as a service on Ory Network and for self-hosters.
I was looking into adding social login with Steam. However, I found out that - to my surprise - they don't use Open ID Connect to offer "login with Steam", but the older Open ID 2.0 protocol. Hence, Kratos currently doesn't offer tools for users to connect their Steam accounts.
Describe your ideal solution
I'd like Kratos to support registration and login with Steam. Ideally, since the response of the login process is "only" the user's Steam ID, it would even be possible to connect the Steam Web API to fill additional fields like the username.
Taking this further, I'd love to go beyond this and even support non-browser flows directly from a game client. I'm not entirely sure what exactly this would require, though.
Workarounds or alternatives
I've read around in the documentation of Kratos and Steam quite a bit in order to find a solution that would be configurable with the current software, but couldn't get anything together.
An alternative could be to write a software surrounding Kratos that would handle the Open ID 2.0 process, but then again it would need to simulate something Kratos would understand (password strategy? doesn't really make sense. open ID connect strategy? kind of contradicts my plan to not implement such stuff on my own).
Preflight checklist
Ory Network Project
No response
Describe your problem
I was looking into adding social login with Steam. However, I found out that - to my surprise - they don't use Open ID Connect to offer "login with Steam", but the older Open ID 2.0 protocol. Hence, Kratos currently doesn't offer tools for users to connect their Steam accounts.
Describe your ideal solution
I'd like Kratos to support registration and login with Steam. Ideally, since the response of the login process is "only" the user's Steam ID, it would even be possible to connect the Steam Web API to fill additional fields like the username. Taking this further, I'd love to go beyond this and even support non-browser flows directly from a game client. I'm not entirely sure what exactly this would require, though.
Workarounds or alternatives
I've read around in the documentation of Kratos and Steam quite a bit in order to find a solution that would be configurable with the current software, but couldn't get anything together. An alternative could be to write a software surrounding Kratos that would handle the Open ID 2.0 process, but then again it would need to simulate something Kratos would understand (password strategy? doesn't really make sense. open ID connect strategy? kind of contradicts my plan to not implement such stuff on my own).
Version
v1.0.0
Additional Context
Steam Open ID 2.0 for websites (on the same page: linking from game clients): https://partner.steamgames.com/doc/features/auth#website
Open ID 2.0 Authentication spec: https://openid.net/specs/openid-authentication-2_0.html
Open ID 2.0 Go library candidates