Ответ от Azure AD B2C без электронной почты?

Я настроил нового клиента B2C в Azure и использую oauth2_proxy (более конкретно: docker-oauth2_proxy) для аутентификации против него.

Требовалось настроить пользовательские URL-адреса для входа, но сам процесс входа в систему работает:

        - name: OAUTH2_PROXY_LOGIN_URL
          value: https://login.microsoftonline.com/tfp/<my-tenant-name>.onmicrosoft.com/b2c_1_policy/oauth2/v2.0/authorize
        - name: OAUTH2_PROXY_REDEEM_URL
          value: https://login.microsoftonline.com/tfp/<my-tenant-name>.onmicrosoft.com/b2c_1_policy/oauth2/v2.0/token

Однако я получаю сообщение об ошибке после того, как меня перенаправляют обратно на https://my-app.example.com :

oauthproxy.go:527: error redeeming code missing email

Я попытался просмотреть полученный токен, но не смог его декодировать через https://jwt.ms.

Так как я не знаю, что именно там содержится, я не хочу публиковать его здесь, но он начинается с eyJraWQi..., который может быть декодирован по base-64 в {"kid":"cpimcore_09252015","ver":"1.0","zip":"Deflate","ser":"1.0"}

Полный формат ответа:

/oauth2/callback?state=a0d367fd2d7337b8fbae8d72052022c7%3a%2f&code=eyJraWQiOiJjcGltY29yZV8wOTI1MjAxNSIsInZlciI6IjEuMCIsInppcCI6IkRlZmxhdGUiLCJzZXIiOiIxLjAifQ..[base64*16].[base64*568].[base64*22]

где [base64*n] обозначает строку из n символов, которые выглядят как данные в кодировке base 64.

Есть идеи, как декодировать этот токен?


person user3151902    schedule 29.05.2018    source источник


Ответы (2)


Вы не можете расшифровать код авторизации, выданный /oauth2/callback, потому что он зашифрован.

oauth2_proxy ожидает поставщика почты Azure или otherMails. Это выдает Azure AD, но не Azure AD B2C. Azure AD B2C отправляет заявку на электронные письма.

Возможно, вам придется изменить этого поставщика Azure AD, чтобы он соответствовал утверждению электронные письма.

person Chris Padgett    schedule 30.05.2018

Не знаю, актуально ли это для вас, Azure AD B2C по существу использует стандартный OpenID Connect, однако с добавлением, что вам необходимо указать политику в качестве дополнительного параметра.

У нас также была необходимость использовать Azure AD B2C с oauth2_proxy, поэтому мы изменили общий поставщик oidc oauth2_proxy, чтобы он мог использовать политику B2C в качестве дополнительной опции конфигурации.

Если хотите, попробуйте: https://github.com/karrieretutor/oauth2_proxy#microsoft-azure-ad-b2c

Если вы строите из исходного кода, имейте в виду, что вам также необходимо использовать наш разветвленный пакет 'go-oidc' (на который полагается oauth2_proxy, но имеет жестко запрограммированную часть URL-адреса эмитента, поэтому нам также пришлось изменить это, чтобы включить политика B2C). Взгляните на Dockerfile, он может правильно его собрать.

person Marcel D. Juhnke    schedule 11.10.2018