gpt4 book ai didi

c# - AADSTS50020 : We are unable to issue tokens from this api version for a Microsoft account

转载 作者:行者123 更新时间:2023-12-02 07:18:35 24 4
gpt4 key购买 nike

我正在编写一个简单的 C# 移动应用程序,我已在 https://apps.dev.microsoft.com/ 注册了该应用程序访问 live.com/outlook.com 邮箱(不是 Outlook 365 mbx)。我使用 ADAL 进行身份验证,使用客户端 ID 和注册中的重定向 URI。我不确定是否应该从注册网站生成密码以及应该如何使用生成的密码。我遇到的情况是,我收到通常的身份验证提示,我提供了我的凭据,我看到一个带有我的数据(名字、姓氏等)的 token (RequestSecurityTokenResponse)返回,这意味着身份验证过程已成功,但身份验证过程结束时出现错误“AADSTS50020:我们无法从此 api 版本为 Microsoft 帐户颁发 token 。请联系应用程序供应商,因为他们需要使用协议(protocol)的 2.0 版来支持此操作。

我不确定如何解释该错误:该错误是说我没有使用协议(protocol)的 v2.0 还是说我没有调用其身份验证端点的 v2.0。

我面临的困难是微软已经改变了很多次协议(protocol)和接口(interface),并且混淆了live.com/outlook.com和azure/office365,最终我不知道我应该提供什么访问 live.com/outlook.com 邮箱的权限 url 和资源 uri。

我注意到,除了身份验证 UI 之外,我没有获得应授权应用程序代表我执行操作的 UI。

Authentication error

下面是经过混淆的 smtp 地址的传出请求。

https://login.live.com/ppsecure/post.srf?wa=wsignin1.0&wtrealm=urn%3afederation%3aMicrosoftOnline&wctx=estsredirect%3d2%26estsrequest%3drQIIARWPsU7CQABAubaQghqRaIIbAy6aa3uFttwlDmog0gEGXSQu19JCY8thbcU4ObjLBzg5OpjoYAyf4MRiYtg00RhmTRzF5SVvey8zV5JQScISQqqeA2idRxIiRYoMS8cUQ8VANixj14HUxSp0DAuXKmXVsh0tzGWyaDi_ix-FndGH_zZprV09ATAG4AuACw5MuMXmVhx11X-w0Dt3plzSZx2vd8sXu1HUPyGyzOLIZ-xIYq7r2Y5ks0AOqOdLoUPbD3xq5gHrjfiihjVLN7QStPU2hmWDupAirQJtza5gRbeo5rZfeTAWwFRYEfnsQj5d-BQVnohiKsvlE4XErwBukrPk7aX3-7vD5eblwc_1y_d-4jkp980qik_7x11crwaBKesmrQ-qhhm2VKaE-2Fto7XXsNBZo9bZRAQNU2CUXo3DHvGcyCWDDmF0tkhUSSGMWX81&wfresh=0&id=&pcexp=false&username=xyz%40hotmail.com&popupui=1&contextid=70F2DEC5506FD639&bk=1491815919&uaid=480c9031b6394304bae56ce1da5a258f&pid=0

这是我使用的代码:

string authority = "https://login.microsoftonline.com/common/oauth2/v2.0/authorize";

PlatformParameters authParms = new PlatformParameters(PromptBehavior.Always, null);

AuthenticationContext authContext = new AuthenticationContext(authority, TokenCache.DefaultShared);

AuthenticationResult result = await authContext.AcquireTokenAsync(
"https://outlook.office.com/mail.read",
clientId,
new Uri(redirectUri),
authParms);

最佳答案

这里有三件事:

  1. 使用 https://apps.dev.microsoft.com 创建的应用程序网站以 AAD v2.0 端点为目标,而不是 v1.0 端点(它们是协议(protocol)的不同版本)

  2. ADAL 不支持 V2.0 端点。它受 MSAL 支持。然而,MSAL 的开发正在进行中,因此我认为您还不能完全使用它(几周后您应该能够使用它,即使到那时我也不认为它会成为 GA)

  3. V2.0 端点支持直接使用 MSA 帐户进行身份验证,因此支持 MSAL,而不是 ADAL。 ADAL 仅支持 ADFS 和 AAD

我了解您想要使用 MSA 帐户(实时)进行身份验证,因此您需要使用 MSA。如果可以的话,我建议您稍等一下

注意:这有点微妙,但您也可以拥有 AAD guest 帐户,它们是 Azure Active Directory 中的 MSA 帐户(您使用现有电子邮件地址创建用户,这可能是 MSA)。 V1.0 端点支持这一点 - 因此 ADAL 也支持这一点,但您必须在 AAD 租户中使用这些电子邮件地址创建用户,这可能不是您想要的。此外,还有一些 MSA 无法工作的流程(例如,当用户进行身份验证以使用 Web 服务时,该服务本身也使用 Web 服务:代表流程),因此我不推荐此选项。

关于c# - AADSTS50020 : We are unable to issue tokens from this api version for a Microsoft account,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43320860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com