【问题标题】:use asp.net web api token to authenticate on mvc web site使用 asp.net web api 令牌在 mvc 网站上进行身份验证
【发布时间】:2017-11-21 04:45:30
【问题描述】:

我有以下设置。

2 个移动应用程序与 asp.net web api 2 项目通信,它们使用 Token Authentication。每个移动客户端都存储令牌客户端,而不是用户名和密码。

然后我将我的门户网站托管在使用标准 cookie 身份验证的 asp.net mvc 5project 上。

现在,在某些情况下,我的移动应用程序需要从 mvc 5web 门户加载网页。例如我们的支付网关页面。但是客户端需要经过身份验证才能加载此页面。

当我们向用户展示一个 web 包装的 web 门户时。它要求他们再次登录。这是非常糟糕的用户体验。

如何使用我的web api Token 对 MVC 站点上的客户端进行身份验证

我在 MVC 站点中想象这样一个函数:

pubic Action LogInWithToken(String token)
{
var user = GetUserFromToken(token);
var isAllowed = AuthenticateUserFromToken(user,token);
if(!isAllowed) return 401;
return CreateCookieForUser(user);
}

【问题讨论】:

  • 您可以使用自定义授权属性来检查请求数据,如果令牌存在则验证用户。检查here并在这方面进行搜索。
  • @SivaGopal 是的,我可以做到。但是你如何解密令牌?我仍然需要一种方法来获取string token 并从令牌中获取用户和时间戳。

标签: c# authentication asp.net-mvc-5 asp.net-web-api2 owin


【解决方案1】:

Web Api 2 应用程序是否与 MVC 5 应用程序托管在同一台机器上?

如果是,您可以手动反序列化令牌以获取用户的 id。见Extract User details from web api auth token in MVC

从那里,您可以在 CookieAuthentication 中自动登录用户。

但是,如果它们托管在不同的机器上,则必须在项目的 Web.Config 文件中指定相同的机器密钥。

【讨论】:

  • 它们托管在 azure web 服务上,设计明智我希望它们能够水平扩展,所以我不想依赖它们是同一台机器。您发送的链接要求我们更改 API 令牌以使用 JWT。如何使用标准 API 令牌做到这一点。
猜你喜欢
  • 2018-03-19
  • 1970-01-01
  • 2016-05-21
  • 2018-11-20
  • 1970-01-01
  • 2017-08-16
  • 1970-01-01
  • 1970-01-01
  • 2016-06-17
相关资源
最近更新 更多