I stood up OAuth2-proxy as a reverse proxy in front of my application, following their instructions. The reverse proxy uses Google accounts for authentication, and uses an existing Google Group for authorization, per those same instructions.
Everything works for some lucky members of the group. Other cursed members of the group are refused access.
Logs reveal that the Google Admin API is responding that each of the lucky emails is in fact a member of the group, but each of the cursed emails is errantly reported as not a member of the group.
What is the difference between the lucky and the cursed? Examining https://console.cloud.google.com/iam-admin/groups/ for my organization and project shows a table with a curious Type icon.
All five of the group members with the icon are lucky: the Google API confirms they are members of the group. All four members without the icon are cursed.
The type icon is associated with the type google.apps.cloudidentity.groups.vx.membership.type.user. The five lucky members all have this type. The four cursed members do not. What is this type? It is mentioned nowhere in the public internet, until this SO question is posted.
Consider the two test emails freddiehubbard1971@yahoo and milesdavis1959@yahoo.com. Freddie and Miles were created at the same time. They are both Yahoo emails, with associated Google accounts. They are alike in every way, except somehow Freddie is lucky and Miles is cursed.
How did Freddie get tagged with google.apps.cloudidentity.groups.vx.membership.type.user and Miles did not? And more importantly how can I ensure that the non-test members of the group are so tagged?