我正在构建一个office.js excel插件。
我有代码尝试获取身份验证信息:
Office.context.auth.getAccessTokenAsync(function(result) {
if (result.status === "succeeded") {
// Use this token to call Web API
var ssoToken = result.value;
} else {
if (result.error.code === 13003) {
// SSO is not supported for domain user accounts, only
// work or school (Office 365) or Microsoft Account IDs.
} else {
// Handle error
}
}
这样做时,我返回错误13004,并显示消息“名称=“提供了无效的应用程序资源URL”。
我的清单包含:
<WebApplicationInfo>
<Id>a02210cd-88ac-4af6-b6cf-ee79006731c1</Id>
<Resource>api://localhost:8001/a02210cd-88ac-4af6-b6cf-ee79006731c1</Resource>
</WebApplicationInfo>
</VersionOverrides>
我已经在具有该应用程序ID的https://portal.azure.com上创建了一个插件应用程序注册(我尝试过“本机”类型和“网络”类型,但不确定是哪种类型适用于Office插件)。
几个人正确地指出,WebApplicationInfo.Resource必须与在AD服务器中注册的appId相匹配。
但是基本上我所有的问题都与WHICH AD帐户有关(我有一个个人帐户和一个公司帐户,并且您使用不同的门户网站来访问它们),以及如何在该AD帐户/应用程序注册上设置清单在https://portal.azure.com上。
有数百个旋钮/变量可以调整,实际上没有关于它们的含义或如何调整的反馈。因此,我将简单地提供一个其他人可以使用的工作示例。我不太确定哪个旋钮/权限很重要。
这是一个工作清单(我的应用程序的子集):
...
<WebApplicationInfo>
<Id>fc63fe86-d03c-4ae9-b520-373fcb386d40</Id>
<Resource>api://localhost:8001/09c94a00-cad9-4af6-ac2c-cdb81a724f16</Resource>
<Scopes>
<Scope>Files.Read.All</Scope>
<Scope>offline_access</Scope>
<Scope>openid</Scope>
<Scope>profile</Scope>
</Scopes>
</WebApplicationInfo>
注意-上面的'id'似乎无关紧要,但是资源中的GUID必须与您注册的应用程序中的appid相匹配。其余的appID必须与您连接插件的方式匹配(目前我仅使用localhost)。
使用门户网站https://portal.azure.com创建您的应用程序注册:
选择“ Azure Active Directory”,再选择“应用程序注册”,创建新的应用程序注册...大多数细节可能无关紧要,因为您将全部替换掉,但是我选择了type = web
然后使用,您将要下载清单并针对该清单进行DIFF处理,并继续对清单进行更改,直到它与该清单匹配为止(因为您不能简单地替换清单中使用的GUID)。
{
"id": "1a225d9a-13f5-4ff6-a62d-bdbd819ef5e5",
"acceptMappedClaims": null,
"accessTokenAcceptedVersion": 2,
"allowPublicClient": null,
"appId": "09c94a00-cad9-4af6-ac2c-cdb81a724f16",
"appRoles": [],
"oauth2AllowUrlPathMatching": false,
"createdDateTime": "2019-03-11T15:45:24Z",
"groupMembershipClaims": null,
"identifierUris": [
"api://localhost:8001/09c94a00-cad9-4af6-ac2c-cdb81a724f16"
],
"informationalUrls": {
"termsOfService": null,
"support": null,
"privacy": null,
"marketing": null
},
"keyCredentials": [],
"knownClientApplications": [],
"logoUrl": null,
"logoutUrl": null,
"name": "StackOverflowTest",
"oauth2AllowIdTokenImplicitFlow": true,
"oauth2AllowImplicitFlow": true,
"oauth2Permissions": [
{
"adminConsentDescription": "consent to use plugin",
"adminConsentDisplayName": "consent to use plugin",
"id": "56b9c899-4e7f-47d3-a584-50ab695b164e",
"isEnabled": true,
"lang": null,
"origin": "Application",
"type": "User",
"userConsentDescription": "consent to use plugin",
"userConsentDisplayName": null,
"value": "user_impersonation"
}
],
"oauth2RequirePostResponse": false,
"optionalClaims": null,
"orgRestrictions": [],
"parentalControlSettings": {
"countriesBlockedForMinors": [],
"legalAgeGroupRule": "Allow"
},
"passwordCredentials": [],
"preAuthorizedApplications": [
{
"appId": "57fb890c-0dab-4253-a5e0-7188c88b2bb4",
"permissionIds": [
"56b9c899-4e7f-47d3-a584-50ab695b164e"
]
},
{
"appId": "d3590ed6-52b3-4102-aeff-aad2292ab01c",
"permissionIds": [
"56b9c899-4e7f-47d3-a584-50ab695b164e"
]
},
{
"appId": "bc59ab01-8403-45c6-8796-ac3ef710b3e3",
"permissionIds": [
"56b9c899-4e7f-47d3-a584-50ab695b164e"
]
}
],
"publisherDomain": "USENAMEFROMYOURDEFAULTGENERATEDAPPREGISRATION.onmicrosoft.com",
"replyUrlsWithType": [
{
"url": "https://localhost:8001",
"type": "Web"
}
],
"requiredResourceAccess": [
{
"resourceAppId": "00000003-0000-0000-c000-000000000000",
"resourceAccess": [
{
"id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
"type": "Scope"
}
]
}
],
"samlMetadataUrl": null,
"signInUrl": null,
"signInAudience": "AzureADMultipleOrgs",
"tags": [],
"tokenEncryptionKeyId": null
}
注意-您不能仅复制关键的requiredResourceAccess和preAuthorizedApplications部分。而是使用广告应用程序注册页面中的GUI,然后转到“公开API”部分。首先添加一个范围为scope-name ='user_impersonation'的范围;然后添加3个授权的客户端应用程序(假设您要支持excel桌面和办公室在线)-57fb890c-0dab-4253-a5e0-7188c88b2bb4,d3590ed6-52b3-4102-aeff-aad2292ab01c,bc59ab01-8403-45c6-8796-ac3ef710b3e3
那应该在清单中产生与preAuthorizedApplications非常接近的部分。
我想感谢帮助我解决所有问题的人-Jim Barrett(https://stackoverflow.com/users/4114387/jim-barrett)
祝你好运!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句