【问题标题】:WebApi authentication with owin and LinkedIn auth provider under Asp.Net使用 Asp.Net 下的 owin 和 LinkedIn 身份验证提供程序进行 WebApi 身份验证
【发布时间】:2018-12-20 13:31:06
【问题描述】:

我们有一个在 Asp.Net 下使用 Owin (.Net Framework 4.6) 运行的 webApi。 几个本机前端客户端(iOs、android 等)正在使用该 api。 该 API 当前使用 Microsoft Login 和不记名令牌和 cookie 身份验证。这有效,访问令牌通过重定向请求直接返回到客户端中的 webView,我们能够使用 Bearer 令牌和另一个身份验证 cookie 访问我们的 API。 我们现在的任务是在该 API 中使用 LinkedIn 身份验证提供程序实现身份验证。澄清一下:我们需要一个 OWIN 实现(没有 AspNet.Core)。

我们可以使用LinkedIn auth provider 在 webAPI 中从 LinkedIn 获取访问令牌。所以我们在 User.Identity.Claims 中看到了令牌。我们也可以再次将其退还给客户。是的,这可能不是一个好主意,但似乎不可能直接在浏览器/webView 中获取令牌,因为 response_type=code 对于linkedIn 身份验证是必需的。使用 response_type=token 这适用于 microsoft 身份验证。

尽管我们已经检索到了 access_token,但最终 webview 还是被重定向到了以下 url: http://10.0.2.2:8108/signin-linkedin?error=unsupported_response_type

请忽略我们暂时不使用 https。宿主仅用于测试,但重要的部分是附加错误。

为什么会出现此错误?谁调用了这个请求,为什么我们已经有了令牌,但为什么会出现这个错误?

另一个信息是,我们现在在客户端中拥有的访问令牌不能用于针对 webAPI 的身份验证。所以我们会返回一个 401 Unauthorized。

也许我应该明确提到我们在 api 中也使用了 cookie 身份验证,这似乎可以工作,因为我们在 webView 中接收 cookie,并且我们只能在正确的用户上下文中调用受 cookie 身份验证保护的方法。

非常感谢任何帮助!

【问题讨论】:

    标签: c# authentication asp.net-web-api owin linkedin


    【解决方案1】:

    使用 HTTPS 后 unsupported_response_type 错误消失。

    【讨论】:

      猜你喜欢
      • 2017-12-17
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      • 2017-12-25
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 2011-05-01
      相关资源
      最近更新 更多