If an ID token is used to identify and authenticate a person, then I can use ID tokens from 3rd-party OpenID Connect providers as a means to authenticate users to my API.
Verification is obviously important. Checking expiry, and then checking that the token was legitimately signed by the provider. This can be done by fetching and checking the token against the public set from the provider (which is discoverable through well-known/openid-config
).
After this, we generate an issue a new Access Token and Refresh Token which the user can use to access resources on our API.
I haven't had to register a client ID or secret on the server, unlike with Authorization Code Flow.
I'm struggling to find good content of this kind of flow online. Is this technically know as Token Exchange since we're trading an 3rd party ID token with bearer access token? https://oauth.net/2/token-exchange/
What are the problems of this flow when compared to Authorization Code Flow. From what I can tell, if a user is revoked by the 3rd party provider, we wouldn't have any knowledge of that. UNLESS we also also keep the provider's refresh token, which we could use to check if the user has been revoked access.
PROPOSED SOLUTION
The security concerns in your proposed design are perhaps as follows:
It is preferred to use the most standard and vetted options in security designs. In some setups, conversations with stakeholders are then much easier.
STANDARD FLOW
The usual way to manage this is for you as data owner to provide an authorization server (AS) that issues tokens to protect your data.
If required, logins can run a federated code flow with external IDPs, as described in my blog post.
In this flow the AS acts as a client of the external IDP. The IDP issues an ID token to the AS, and no tokens from other apps are used. The AS bootstraps a session after validating the ID token, then issues its own tokens.
SUMMARY
There is common ground in the standard flow and your proposal. Perhaps the main difference is that the standard flow is an official integration between conpanies. It would involve all of the right reviews, eg from identity teams. In some setups this might be more important than others.