Azure B2C:Microsoft Graph API - InvalidAuthenticationToken

Tim*_*Tim 0 azure-active-directory azure-ad-b2c azure-ad-msal

/me从 iOS 登录 Azure B2C Active Directory 后,我尝试调用Microsoft Graph API。

使用以下示例应用程序:https : //github.com/Azure-Samples/active-directory-b2c-ios-swift-native-msa我替换了常量,以便注册和登录工作。我已经设置kGraphURIhttps://graph.microsoft.com/v1.0/me. 代码如下所示:

let kTenantName = "mytenant.onmicrosoft.com"
let kAuthorityHostName = "mytenant.b2clogin.com"
let kClientID = "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
let kSignupOrSigninPolicy = "B2C_1A_signup_signin"
let kGraphURI = "https://graph.microsoft.com/v1.0/me"
let kScopes: [String] = ["https://mytenant.onmicrosoft.com/api/user_impersonation"]
Run Code Online (Sandbox Code Playgroud)

的值kScopes设置为我的应用程序唯一可用的 API,它是作为设置用户策略的说明的一部分创建的。

当我尝试打电话时,https://graph.microsoft.com/v1.0/me我回来了:

{ "error": { "code": "InvalidAuthenticationToken", "message": "访问令牌验证失败。", "innerError": { "request-id": "e923673f-25cb-44be-b3b9-94eda660d4f6", "日期": "2020-02-11T08:31:24" } } }

如果我尝试设置kScopeshttps://graph.microsoft.com/User.Read我得到一个错误:

无法获取令牌:错误域=MSALErrorDomain Code=-50000 "(null)" UserInfo={MSALErrorDescriptionKey=收到的身份验证响应没有预期的 accessToken, MSALInternalErrorCodeKey=-42008, MSALCorrelationIDKey=FFCCD1D4-F0C8-46E6-85B2-A5641D}E1D

如何/me使用 Azure B2C Active Directory 中的访问令牌调用Microsoft Graph API?

Jas*_*SFT 5

不能使用 Azure AD B2C 颁发的访问令牌来调用 Azure AD 或 Microsoft Graph API。您必须让用户调用您的 API,并且您的 API 需要使用 client_credentials 来获取使用 B2C 目录的 Azure AD 令牌终结点的图形 API 的令牌。然后API可以为用户查询Graph API并返回结果。

Azure AD B2C 访问令牌只能用于访问你自己的受保护资源。