我正在开发一个iOS应用程序,要求用户针对Azure AD(而不是B2C)进行身份验证,然后使用JWT令牌来调用WebAPI。
我正在使用AppAuth库:
OIDAuthorizationService.discoverConfiguration(forDiscoveryURL: url) { configuration, error in
...
}
然后
let request = OIDAuthorizationRequest(configuration: configuration, clientId:<NativeApp AppID>, scopes: [OIDScopeOpenID], redirectURL: redirectURL, responseType: OIDResponseTypeCode, additionalParameters: ["resource": "<WebAPI AppID>"])
OIDAuthState.authState(byPresenting: request, presenting: presentingViewController) { state, error in
...
}
但问题是,我的JWT令牌的受众声明具有我的客户端的AppID,而不是WebAPI的AppID,即使我将资源参数与WebAPI AppID一起传递。
因此,我的WebAPI拒绝JWT令牌,因为受众群体声明不正确。
我需要做些什么才能让JWT令牌的受众声称自己是WebAPI的AppID?
答案 0 :(得分:0)
请求访问其他资源时,Azure AD会返回ID令牌和访问令牌。我正在使用ID令牌,它始终将您的受众群体声明设置为您的客户。使用访问令牌(也是JWT令牌)可以为您请求访问的资源提供正确的受众声明。