【问题标题】:Problems authenticating with OneDrive for Business使用 OneDrive for Business 进行身份验证时出现问题
【发布时间】:2016-10-24 19:35:33
【问题描述】:

我正在测试 OneDrive SDK .NET 示例应用程序 here。但是,我不清楚分别与 AdalAuthenticationProvider 和 OneDriveClient 类一起使用的 AadReturnUrl 和 AadTargetUrl 常量需要什么值。该项目的 GitHub 自述文件引用了此page,但该页面也不清楚。

另外:对于本机客户端应用程序,当您在 Azure AD 中配置应用程序时,您使用什么值作为重定向 URI?此值是否与上述所需的 URL 相关?

编辑:我尝试了第一条评论中的建议并收到以下错误,来自 FormBrowser.SignIn 中的此代码(其中 AadReturnURL = http://myactualdomain.onmicrosoft.com;这是一个本机应用程序,我假设如果我无法显示网页,这可能是一个“虚拟”URL):

var adalAuthProvider = new AdalAuthenticationProvider(FormBrowser.AadClientId, FormBrowser.AadReturnUrl);
this.oneDriveClient = new OneDriveClient(FormBrowser.AadTargetUrl + "/_api/v2.0", adalAuthProvider);
authTask = adalAuthProvider.AuthenticateUserAsync(FormBrowser.AadTargetUrl);

抛出异常:Microsoft.IdentityModel.Clients.ActiveDirectory.dll 中的“Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException” Microsoft.IdentityModel.Clients.ActiveDirectory 错误:4:2016 年 10 月 24 日 22:05:41:e9c2c5cd-1750-4d0f-b3a2-f373f7de309a - d__0:Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException:AADSTS50001:应用程序名为 @在名为 myactualdomain.onmicrosoft.com 的租户中找不到 987654324@。如果租户管理员未安装应用程序或未获得租户中任何用户的同意,则可能会发生这种情况。您可能已将身份验证请求发送给错误的租户。 跟踪 ID:16192303-40e9-4944-b376-d25d4ff52b73 相关 ID:e9c2c5cd-1750-4d0f-b3a2-f373f7de309a 时间戳:2016-10-24 22:05:40Z 在 Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenInteractiveHandler.VerifyAuthorizationResult() 在 Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenInteractiveHandler.PreTokenRequest() 在 Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenHandlerBase.d__0.MoveNext() 错误代码:invalid_resource 状态码:0

OneDriveApiBrowser.vshost.exe 错误:0:20​​16 年 10 月 24 日 22:05:41:e9c2c5cd-1750-4d0f-b3a2-f373f7de309a - d__0:Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException:AADSTS50001:应用程序名为在名为 myactualdomain.onmicrosoft.com 的租户中找不到 https://myactualdomain-my.sharepoint.com/_api/v2.0。如果租户管理员未安装应用程序或未获得租户中任何用户的同意,则可能会发生这种情况。您可能已将身份验证请求发送给错误的租户。 跟踪 ID:16192303-40e9-4944-b376-d25d4ff52b73 相关 ID:e9c2c5cd-1750-4d0f-b3a2-f373f7de309a 时间戳:2016-10-24 22:05:40Z 在 Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenInteractiveHandler.VerifyAuthorizationResult() 在 Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenInteractiveHandler.PreTokenRequest() 在 Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenHandlerBase.d__0.MoveNext() 错误代码:invalid_resource 状态码:0

【问题讨论】:

    标签: onedrive


    【解决方案1】:

    AadTargetUrl 应该是您的服务的 URL。例如,https://contoso-my.sharepoint.com/_api/v2.0/ 将是您在 Contoso 租户上的 OneDrive for Business 的 URL。您可以使用 Discovery Service 获取有关获取目标 URL 的更多信息。

    AadReturnUrl 是您在 Azure 管理门户中配置的重定向 URL(正如您所猜测的那样)。对于本地应用程序,它通常类似于 http://localhost:8080,但对于 Web 应用程序可能会有所不同。你可以在article you already linked获得更多信息。

    【讨论】:

    • 谢谢!虽然我仍然不清楚我是否可以只使用您提供的 URL(当然减去 Contoso),因为它失败并出现“未找到”错误(在我更新的帖子中)。否则,我对 Discovery Service 文档的评论似乎暗示我实际上必须开发一个解决方案(或运行示例)才能获得正确的端点??
    • 另外:是否需要为 OneDrive4B API 和/或 Discovery Service 开启 Graph?
    • 我得到了它的工作,愚蠢的错误 - 我的 AadTargetUrl 常量是 contoso-my.sharepoint.com/_api/v2.0,当然我调用的代码是冗余添加 /_api/v2.0 到 URL
    猜你喜欢
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多