Azure ad b2c Azure AD b2c android应用程序可安全访问非图形API

Azure ad b2c Azure AD b2c android应用程序可安全访问非图形API,azure-ad-b2c,Azure Ad B2c,我正在尝试访问android应用注册的同一台服务器上的API。登录android应用程序的过程运行良好。我尝试使用生成的IAAuthenticationResult.getAccessToken()访问同一服务器上的API,但未成功。我在邮递员和我的应用程序上都收到一条401未经授权的错误消息。可用的示例应用程序可以与Microsoft Graph配合使用,但我没有看到任何示例访问其他形式的API,包括托管在同一客户端中的API。对我有效的解决方案是将android代码中的SCOPE参数指定为{

我正在尝试访问android应用注册的同一台服务器上的API。登录android应用程序的过程运行良好。我尝试使用生成的IAAuthenticationResult.getAccessToken()访问同一服务器上的API,但未成功。我在邮递员和我的应用程序上都收到一条401未经授权的错误消息。可用的示例应用程序可以与Microsoft Graph配合使用,但我没有看到任何示例访问其他形式的API,包括托管在同一客户端中的API。

对我有效的解决方案是将android代码中的SCOPE参数指定为{”https://graph.microsoft.com/.default"};. 这是我获得有效的承载令牌的唯一方法,可以通过调用

来在后端验证。要解析您的访问令牌并提供屏幕截图,请检查
aud
以确保它是您要调用的api。jwt.ms中显示的aud是正确的clientid。但请注意,本例中的clientid是针对android应用注册的webapp的。API是webapp公开的端点。我访问API的方式是使用[Authorize]修饰目标API,并从android应用程序传递一个承载令牌(即iaAuthenticationResult.getAccessToken()),您是否公开了受Azure保护的API?您是如何获得令牌的?提供邮递员截图方便吗?关于你的第一个问题,我已经提到,我注册的同一个webapp也暴露了android应用程序前端与之交互的几个端点(大约35个)。关于第二个问题,令牌来自com.microsoft.identity.client.AuthenticationCallback的身份验证结果(即authenticationResult.getAccessToken())。回调部分的代码段是私有AuthenticationCallback getAuthInteractiveCallback(){@Override public void onSuccess(IAAuthenticationResult authenticationResult){authenticationResult.getAccessToken()