首页 > 解决方案 > 使用 Asp.Net 下的 owin 和 LinkedIn 身份验证提供程序进行 WebApi 身份验证

问题描述

我们有一个使用 Owin (.Net Framework 4.6) 在 Asp.Net 下运行的 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错误=不支持的_response_type

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

为什么我们会得到这个错误?谁调用了这个请求,为什么我们已经有了令牌,但我们仍然有这个错误?

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

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

非常感谢任何帮助!

标签: c#authenticationasp.net-web-apiowinlinkedin

解决方案


使用 HTTPS 后 unsupported_response_type 错误消失。


推荐阅读