0

我正在开发一个 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?

4

1 回答 1

0

当请求访问另一个资源时,Azure AD 会返回一个 ID 令牌和一个访问令牌。我使用的是 ID 令牌,它始终将其受众声明设置为您的客户。使用访问令牌(也是 JWT 令牌)对您请求访问的资源具有正确的受众声明。

于 2017-09-08T08:28:57.517 回答