当前位置: 首页 > 知识库问答 >
问题:

在Java中使用MSAL(msal-client-credential-secret)请求补丁

方飞鸣
2023-03-14
    null
private void setAndroidModels(final String accessToken, final String policyId, final String modelList)
        throws IOException {
    URL url = new URL(
            "https://graph.microsoft.com/beta/deviceAppManagement/androidManagedAppProtections/" + policyId);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();

    conn.setRequestMethod("PATCH");
    conn.setRequestProperty("Authorization", "Bearer " + accessToken);
    conn.setRequestProperty("Accept", "application/json");
    conn.setDoOutput(true);

    try (OutputStream os = conn.getOutputStream()) {
        byte[] input = modelList.getBytes();
        os.write(input, 0, input.length);
    }

    int httpResponseCode = conn.getResponseCode();
    System.out.println("POST Response Code :  " + httpResponseCode);
    System.out.println("POST Response Message : " + conn.getResponseMessage());
}
private void setAndroidModels(final String accessToken, final String policyId, final String modelList)
        throws IOException {
    URL url = new URL(
            "https://graph.microsoft.com/beta/deviceAppManagement/androidManagedAppProtections/" + policyId);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();

    conn.setRequestProperty("X-HTTP-Method-Override", "PATCH");
    conn.setRequestMethod("POST");
    conn.setRequestProperty("Authorization", "Bearer " + accessToken);
    conn.setRequestProperty("Accept", "application/json");
    conn.setDoOutput(true);

    try (OutputStream os = conn.getOutputStream()) {
        byte[] input = modelList.getBytes();
        os.write(input, 0, input.length);
    }

    int httpResponseCode = conn.getResponseCode();
    System.out.println("POST Response Code :  " + httpResponseCode);
    System.out.println("POST Response Message : " + conn.getResponseMessage());
}

结果:POST响应代码:400 POST响应消息:错误请求

如何使客户端凭据秘密逻辑工作于POST和补丁HTTP方法?

共有1个答案

耿运浩
2023-03-14

我们可以在MS图中直接调用补丁请求。

当创建对API的修补程序请求时,您需要创建一个新的修补程序对象,该对象只包含您想要更新的信息。这应该不同于您从GET或POST的服务中接收的任何对象。

详情请参阅文件。

User realMe = graphClient.me().buildRequest().get();


User patchMe = new User();
patchMe.givenName = "Beth";


realMe = graphClient
    .users(realMe.userPrincipalName)
    .buildRequest()
    .patch(patchMe);
 类似资料:
  • 我有Azure Functions,我想使用访问令牌对其进行身份验证。 我已经安排好了以下事情 Angular SPA正在使用Azure应用程序对用户进行身份验证 用于调用图形API的访问令牌,权限在Azure应用程序中设置(第1点) Azure函数具有SPA正在使用的超文本传输协议触发器(API) 目前,API是匿名的,可以从任何地方调用。我想使用图形api使用的访问令牌来保护这些api(第2点

  • 我正在尝试使用 MSAL (1.0.304142221-alpha) 使用客户端凭据流获取微软图形 API 的令牌。我的代码看起来像这样: 第二行引发异常:“AADSTS70011:为输入参数'scope'提供的值无效。范围邮件读取无效。图形 API 引用似乎引用了“邮件.Read”作为所需的范围。 Azure AD中的应用程序是一个具有单个密钥的Web应用程序。应用程序具有Microsoft G

  • 问题内容: 我正在使用djang-tastypie作为后端和AngularJs作为前端的API。我正在使用angularjs $ http从CRUD发送请求。GET,POST,PUT一切都很好,但是当我尝试发送PATCH请求时,出现错误,未定义PATCH方法。我已经在angular中创建了一个api调用工厂,但是PATCH请求在那里不起作用。 这是我的HTML代码 当我在控制台中使用此代码发送路径

  • 我正在尝试进行http补丁请求,但我总是得到404错误,所以可能是我的连接设置不正确: 我收到404错误,未找到。当使用Postman执行相同的请求时,这是有效的…谢谢你的帮助。

  • 我正在尝试在Android中实现MSAL,以便使用他们的微软凭据登录用户。在全新安装时,我第一次能够获取令牌,并进一步使用它来访问微软图形API。 由于MSAL令牌的到期时间默认为1小时,如果我尝试重新启动应用程序,1小时后,我将面临令牌身份验证异常。 现在我被困在如何再次刷新令牌上? 在MSAL中,我遵循了这些示例,但没有任何地方提到使用Android SDK刷新令牌[我们可以使用API调用来获

  • 我有一个受保护的Web API正在运行,我想访问它。在Azure中,应用注册是: 具有Web API租户管理员权限的SPA Web API没有租户管理员权限,因此请求其id的令牌将返回“应用需要访问资源的权限”错误 我正在尝试获取Web API的承载令牌。问题是它不适用于MSAL,但适用于ADAL。 以下是我的“SPA”的ADAL vanilla JS代码: 如果我在“邮递员”中复制令牌并执行请求

  • 我有一个Web应用程序(Angular 7),它使用MSAL Angular对Azure AD用户进行身份验证,并获取访问我的Web API(.NET 4.6)的访问令牌。这两个应用都已在Azure门户中注册,并具有以下权限,如下所述: Web应用程序:for Web API(委派) Web API:<代码>用户。阅读邮政发送MS图表(委派) 现在,我想使用ADAL for从Web API调用Mi