【问题标题】:Authorising a .net user-application through Google or Twitter通过 Google 或 Twitter 授权 .net 用户应用程序
【发布时间】:2016-04-19 16:28:59
【问题描述】:

我的问题是[类似于这个1,但使用第三方提供商而不是活动目录。

我有一个最终用户 UWP 应用,我想使用我的 Azure API 应用。我不是 Azure 移动应用程序,它是客户端 SDK。

大多数文档都属于“复制粘贴此魔术代码”,从不解释身份验证的实际发生方式。

我正在检查移动应用 SDK,因为 Microsoft 的文档说它是 auth。过程是一样的。 据我所见,移动 App SDK 打开一个与WebAuthenticationBroker 生成的非常相似的网络视图。然后对服务器的每个请求都伴随着一个标头 X-ZUMO-AUTH 和一个令牌。看来此令牌是由 azure app 服务颁发的,而不是原始提供者。它比 Twitter 或 Google 发行的代币要长得多。 同时,当我将网络浏览器指向端点并进行登录过程时,我看到浏览器正在使用 Cookie:ARRAffinity=c4b66198677464de573103f7aa267c33ea38617020514011cea4506e0a55d9d0; AppServiceAuthSession=EIVymV

问题:

  1. 问题是移动应用程序文档只是提供 有关如何使用 SDK 的说明。我不清楚我会如何 获取应用服务颁发的令牌。

  2. 每个人都知道如何为 Google 获取访问令牌 和推特。它们可以用来访问 Azure API 应用吗?

【问题讨论】:

    标签: azure-api-apps


    【解决方案1】:

    API 应用使用与移动应用相同的内置身份验证是正确的。基本流程如下所示:

    1. 使用提供商凭据登录应用程序。这可以使用提供商的 SDK 使用客户端导向的流程来完成,也可以使用涉及浏览器弹出窗口(即您提到的 Web 视图)的服务器导向的流程来完成。在后一种情况下,/.auth/login/ 处有一个端点,由应用服务提供并管理您的应用的登录流程。
    2. 应用服务将使用会话令牌 (JWT) 响应您的客户端应用。
    3. 您使用来自 #2 的会话令牌调用您的 API。它通过 x-zumo-auth HTTP 请求标头传递(由于遗留原因,它以这种方式命名)。

    您看到的 AppServiceAuthSession cookie 是您使用浏览器进行身份验证时的会话 cookie。 ARRAffinity 是 App Service 使用的内部路由 cookie,与 auth 无关。

    如果您正在寻找有关内置应用服务身份验证/授权如何工作的更多内部技术细节,请查看我的博客,从这篇文章开始:http://cgillum.tech/2016/02/01/architecture-of-azure-app-service-authentication-authorization/

    【讨论】:

    • 问题是移动应用文档没有解释授权。答:如果我有一个 twitter 访问令牌,我可以将它与我的 Azure API 应用程序一起使用吗?
    • 是的,您可以使用采用 JObject 的 LoginAsync 重载。我不确定文档在哪里(可能需要添加/更新)。基本上,您需要传递一个 JSON 对象,例如 {"access_token":"XXX", "access_token_secret": "YYY" }。我会四处看看有没有这方面的博文。
    • 感谢您的回答。我刚刚使用 WebAuthBroker 成功获得了 Azure Api App 令牌。但是令牌以:token=7B22authenticationToken223A22eyJ0eXA 开头,我不得不删除带有 223A22 的部分。这是为什么?也只是阅读你的博客,关于刷新令牌的东西很棒!我在其他地方没见过。
    • 很奇怪,看起来像是一个编码问题,其中 '%' 字符被丢弃了。前几个字符代表 { 和 '"' 字符,因为令牌参数正在返回一个 JSON 对象。无论如何,很高兴你没有被阻止。请随时将我的答案标记为已接受的答案。:)
    • 我基本上使用“/.auth/login/twitter”的 StartUrl 和“/.auth/login/done”的 EndURL 运行 WebAtuhBroker。我在 URI 中获得了令牌。这是进行此过程的好方法吗? % 字符被我删除了,我没有意识到它是 URI 编码的 JSON。
    猜你喜欢
    • 2013-04-17
    • 2016-02-27
    • 2011-07-13
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 2013-05-21
    相关资源
    最近更新 更多