微软基础架构的当前OAuth URL和范围是什么?

时间:2017-07-07 13:50:30

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

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

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

并且17:02的人为范围和授权和令牌URL添加了以下值:

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

然后我偶然发现了微软的文档:

https://docs.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日(即2017年的BUILD),文章是2017年4月8日。那么哪一个是正确/弃用的?此外,我尝试混合它们,这是使用不同组合的登录提示:

enter image description here

正如您所看到的,范围/网址的所有四种变体都会在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弹出:

enter image description here

UPDATE 2 FRESH !!!: https://twitter.com/chriscapossela/status/888029356504645632

1 个答案:

答案 0 :(得分:3)

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

在当天,为了验证Microsoft用户,您必须知道用户是否拥有OrgId(用于登录Microsoft的业务服务)或MSA(用于登录非商业Microsoft服务)身份。由于我不会偏离的原因,它产生了两个oAuth端点:

可以理解的是,开发人员对此非常不满。为解决此问题,Microsoft创建了v2 app model,允许您为两种帐户类型使用一个AuthN / Z端点。 v2 app模型使用 lot 黑魔法来抽象MSA和OrgID之间的同意,范围,端点等差异,因此您作为开发人员不必担心它。

但是 - 我们的一些API,特别是那些创建在v2之前的端点,适用于特定的帐户类型。 Nafis在构建演示IIRC中使用的Live API与OrgID身份不兼容 - 如果用户使用他们的OrgId帐户登录v2端点,您将获得非理想行为,因为访问令牌将用于一个OrgID帐户。为了防止这种技能破坏行为,他直接使用MSA端点(live.com),阻止OrgID用户登录该技能。

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

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