java - 无法使用 Java SDK 通过 MS Graph API 在 Azure AD 中添加企业应用程序的 SAML 签名选项
问题描述
列表定义List = new LinkedList<>(); definitionList.add("{"TokenIssuancePolicy":{"TokenResponseSigningPolicy":"ResponseAndToken","SamlTokenVersion":"2.0","SigningAlgorithm":"http://www.w3.org/2001/04/xmldsig-more# rsa-sha256","版本":1}}");
TokenIssuancePolicy newPolicy = new TokenIssuancePolicy();
newPolicy.definition = definitionList;
newPolicy.displayName = "sample-app";
newPolicy = serviceClient.policies().tokenIssuancePolicies().buildRequest().post(newPolicy);
System.out.println("https://graph.microsoft.com/v1.0/policies/tokenIssuancePolicies/"+newPolicy.id);
TokenIssuancePolicyCollectionWithReferencesPage policyPage = serviceClient.servicePrincipals(principal.id).tokenIssuancePolicies().buildRequest().get();
List<TokenIssuancePolicy> policyList = policyPage.getCurrentPage();
System.out.println(policyPage.getCount());
if (Objects.isNull(policyList) || policyList.isEmpty()) {
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
}
policyList.forEach(app1 -> System.out.println(app1.displayName + " : " + app1.id));
TokenIssuancePolicy policy = new TokenIssuancePolicy();
policy.additionalDataManager().put("@odata.id", new JsonPrimitivenew JsonPrimitive("https://graph.microsoft.com/v1.0/policies/tokenIssuancePolicies/" + newPolicy.id));
System.out.println(policy.additionalDataManager());
serviceClient.servicePrincipals(principal.id).tokenIssuancePolicies().references().buildRequest().post(policy);
以上是我试图更新企业应用程序策略但以无效对象标识符“null”结束的代码。谁能帮我解决这个问题。提前致谢。 在此处输入图像描述
解决方案
根据我的测试,我们不能使用代码TokenIssuancePolicy policy = new TokenIssuancePolicy(); policy.additionalDataManager().put("@odata.id", new JsonPrimitivenew JsonPrimitive("https://graph.microsoft.com/v1.0/policies/tokenIssuancePolicies/" + newPolicy.id));
来创建新策略。我们需要更新代码如下
TokenIssuancePolicy policy = new TokenIssuancePolicy(); policy.id=tokenIssuancePolicy.id;
例如
TokenIssuancePolicy tokenIssuancePolicy = new TokenIssuancePolicy();
LinkedList<String> definitionList = new LinkedList<String>();
definitionList.add("{\r\n \"TokenIssuancePolicy\": {\r\n \"Version\": 1,\r\n \"SigningAlgorithm\": \"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\",\r\n \"TokenResponseSigningPolicy\": \"ResponseAndToken\",\r\n \"SamlTokenVersion\": \"2.0\"\r\n }\r\n}");
tokenIssuancePolicy.definition = definitionList;
tokenIssuancePolicy.displayName = "mytest";
tokenIssuancePolicy= graphClient.policies().tokenIssuancePolicies()
.buildRequest()
.post(tokenIssuancePolicy);
System.out.println("https://graph.microsoft.com/v1.0/policies/tokenIssuancePolicies/"+tokenIssuancePolicy.id);
TokenIssuancePolicy policy = new TokenIssuancePolicy();
policy.id=tokenIssuancePolicy.id;
policy =graphClient.servicePrincipals("00964c82-a7c2-4675-bbed-54bcf16328b3").tokenIssuancePolicies().references()
.buildRequest()
.post(policy);
System.out.println("-----------"+policy.id);
推荐阅读
- php - codeigniter godaddy 电子邮件 ssl
- conv-neural-network - 如何预处理“猫对狗”Tensorflow 数据集以便在 CNN 中处理它?
- php - 是否有数学计算可以通过谷歌的 Elevation API 来定义点 A 和点 B 之间是否存在可见性?
- mongodb - 具有两个字段匹配的 Mongo 聚合
- nginx - 直接访问 URL 导致在 Nginx 服务器上找不到 404 页面
- flutter - 颤振本地通知图标未显示
- python - 在 python 中,我想使用连接函数,但出现错误:"TypeError: 'builtin_function_or_method' object is not subscriptable"
- php - Yii2:对会话超时执行操作
- javascript - vuejs2 splice 仅删除最后一个元素
- java - 使用 Spring Boot @Configuraion 和 @Value 初始化 javafx 的 TextField 的默认值