Azure AD B2C令牌问题

时间:2017-09-15 10:47:50

标签: azure azure-active-directory azure-ad-b2c azure-ad-graph-api

作为一家企业,我们希望使用 Azure AD B2C ,我们有内部和外部用户。

Azure AD帮助我们管理Azure用户,企业用户,甚至可以使用x @ .onmicrosoft.com电子邮件添加用户。

当我们想要为我们的消费者使用Azure AD B2C时。我们有2个选项来添加我们的用户,即本地用户外部用户(Facebook,Google等)

如果本地用户属于我们的公司,则可以使用Azure AD B2C门户创建用户。

但是当我们尝试创建具有其他类型电子邮件的Azure AD B2C用户时,我们需要使用我们自己的使用Graph API的应用程序。 (即Azure门户限制

问题是我们很难在登录后获取用户值,因为他们是使用Gmail或x电子邮件的本地用户。

我们使用MSAL来获取相关信息而不是ADAL。

我们已启用范围并启用了API访问,但这是我们遇到的错误。

enter image description here

错误1:

获取弹出窗口: AADB2C90055:请求中提供的范围“openid email openid profile”必须指定资源,例如“https://example.com/calendar.read”。

相关ID:86d6ff41-1cef-4ba1-9b26-2aa281c92ccd

时间戳:2017-09-15 10:22:20Z

错误2

invalid_request登录时出错: AADB2C90117:不支持请求中提供的范围'user_impersonation'。

相关ID:785c6487-cd7f-4750-a769-deb477cb4ba4

时间戳:2017-09-15 10:32:39Z

:INVALID_REQUEST

错误3

获取弹出窗口时出错: AADB2C90055:请求中提供的范围“电子邮件openid配置文件”必须指定资源,例如“https://example.com/calendar.read”。

相关ID:bd714482-8534-473e-94bc-0a4c56da686d

时间戳:2017-09-15 10:36:15Z

:INVALID_REQUEST

2 个答案:

答案 0 :(得分:2)

Error1和Error3

当我们使用MSAL库与Azure AD B2C进行交互时,无需提供范围import re teststr = """!# Approved : YES !# REASON: test !# DEVICE: TEST1TEST2 !# ACL: <Rule No>/110 and 102/120 !# SECTION: MORI !# REQUESTER: test1x !# MODIFIER: test1""" def test(): q = re.compile(r'(?<=!# )device.*\b\W', re.MULTILINE | re.IGNORECASE) print(q.findall(teststr)) 。 SDK会自动添加范围。我们只需要提供我们为Azure AD B2C刀片上的Web API应用程序注册定义的自定义范围。

误差2

范围openid profile offline_access是应用程序默认定义的自定义范围。我们应该包含app id URI(user_impersonation),如下所示:

https://{myB2CTenant}.onmicrosoft.com/b2capp2

而AFAIK,Azure AD B2C目前还不支持委派用户访问Azure广告图表。我们需要通过Azure Active Directory注册应用程序 - >应用程序注册(不在Azure AD B2C刀片中),并通过客户端凭据流访问Microsoft或Azure AD Graph。以下是在Azure AD B2C中调用Graph API的有用链接:

Azure AD B2C: Use the Graph API

如果您希望Azure AD B2C应用程序也支持委派用户调用Microsoft Graph,您可以从here提交反馈。

答案 1 :(得分:0)

对于我错误的测量,我在没有有效的idToken时尝试获取accessToken。

因此,在调用acquireTokenSilent()之前,请确保您拥有有效的idToken。