azure - Microsoft 基础结构当前的 OAuth URL 和范围是什么?

标签 azure outlook oauth-2.0 botframework cortana-skills-kit

我正在尝试构建一个需要基本 Outlook 登录的机器人。我正在观看这个视频

https://channel9.msdn.com/events/Build/2017/P4063?term=cortana%20skill

17:02 的人为范围、授权和 token URL 添加了以下值:

wl.basic wl.birthday
https://login.live.com/oauth20_authorize.srf
https://login.live.com/oauth20_token.srf

然后我偶然发现了 Microsoft 的文档:

https://learn.microsoft.com/en-us/cortana/tutorials/bot-skills/bot-skill-auth

其中表示范围和 URL 的值是:

User.Read offline_access openid
https://login.microsoftonline.com/common/oauth2/v2.0/authorize
https://login.microsoftonline.com/common/oauth2/v2.0/token

视频来自 2017 年 5 月 10 日(即 BUILD 2017),文章来自 2017 年 4 月 8 日。那么哪一个是正确的/已弃用的?我还尝试混合它们,这就是不同组合的登录提示的样子:

enter image description here

正如您所看到的,范围/url 的所有四种变体都会在 UI 中产生完全不同的登录?!?!?! (右栏的看起来也有点破损)哪个是正确的方法?

更新 另外,在这篇文章之后,我使用文档中描述的 URL 添加了一张歌唱卡到我的机器人中:

var message = context.MakeMessage() as IMessageActivity;
message.Speak = "This is a Sign-in card";
message.Summary = "This is a Sign-in card";
message.Text = "Message Text";
message.Attachments = new List<Attachment>(){
    new SigninCard("You need to authorize me", new List<CardAction>()
    {
        new CardAction()
        {
            Value = "https://login.microsoftonline.com/?redirect_uri=http%3a%2f%2fbing.com%2fagents%2foauth",
            Type = "signin",
            Title = "Connect"
        }
    }).ToAttachment()
};
await context.PostAsync(message);

令我惊讶的是,单击登录按钮时,会弹出一个类似于 Office 365 的全新登录 UI:

enter image description here

更新 2 条!!!: https://twitter.com/chriscapossela/status/888029356504645632

最佳答案

这个答案需要一点历史:)

过去,为了对 Microsoft 用户进行身份验证,您必须知道用户是否具有 OrgId(用于登录 Microsoft 的业务服务)或 MSA(用于登录非业务 Microsoft 服务)身份。由于我不想离题的原因,它导致了两个 oAuth 端点:

可以理解的是,开发人员对此感到非常沮丧。为了解决此问题,Microsoft 创建了 v2 app model ,它允许您对两种帐户类型使用一个 AuthN/Z 端点。 v2 应用程序模型使用了很多黑魔法来抽象化 MSA 和 OrgID 之间在同意、范围、端点等方面的差异,因此作为开发人员的您不必担心它。 p>

但是 - 我们的一些 API,尤其是在 v2 之前创建的端点,是针对特定帐户类型的。 Nafis 在构建演示中使用的 Live API,IIRC 不能很好地处理 OrgID 身份 - 如果用户使用其 OrgId 帐户登录 v2 端点,您将得到不理想的行为,因为访问 token 将用于一个 OrgID 帐户。为了防止这种破坏技能的行为,他直接使用 MSA 端点 (live.com),从而完全阻止 OrgID 用户登录该技能。

混合 URL 时您会看到不同的 UX,因为 v1 和 v2 端点提供不同的登录 UX。最后一个图像中的错误消息似乎表明您正在使用 MSA 身份登录聚合 API。 $5 表示这与您混合 v1 和 v2 端点/范围/等这一事实有关,但如果不查看确切的 API 调用就很难判断。

CSK 文档使用 v2 端点,因为我们的大多数 API(包括邮件/Outlook API,它们现在是 Microsoft Graph 的一部分)现在都在使用它。当我使用 MSFT 服务编写代码时(或者当我为服务编写文档时;)),我默认使用 v2 应用程序模型,除非 API 文档特别提到 v1 端点,例如 live API docs做。

关于azure - Microsoft 基础结构当前的 OAuth URL 和范围是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44972531/

相关文章:

azure - 配置 ninject 以与 azure 配合使用

vba - 将 Excel 范围粘贴到 Outlook 电子邮件正文

rest - 如何为NFL Shield API创建访问 token ?

oauth-2.0 - Keycloak: Missing parameter: code, 如何使用POST请求获取Keycloak中的code

python - 如何从 Ubuntu 连接到 Windows SQL Server

asp.net - 如何向 Azure SQL 的 ASP.NET 成员资格提供程序添加重试逻辑?

c# - 如何手动使用 azure 表类对象的列名称?

html - Outlook 2003 从 html 邮件中删除除第一个图像之外的所有图像

email - Outlook 中电子邮件的简短预览显示图像 src 而不是替代文本

c# - IdentityServer4 - 客户端的委托(delegate)访问 token