使用asp.net web api令牌在mvc网站上进行身份验证
我有以下设置。使用asp.net web api令牌在mvc网站上进行身份验证
2个移动应用程序与asp.net web api 2
项目通信,他们使用Token Authentication
。每个移动客户端都存储令牌客户端,而不是用户名和密码。
然后,我的门户网站托管在asp.net mvc 5
项目上,该项目使用标准Cookie身份验证。
现在在某些情况下,我的移动应用需要从mvc 5
门户网站加载网页。例如我们的付款网关页面。但客户端需要进行身份验证才能加载此页面。
当我们向用户展示Web门户网站的时候。它要求他们再次登录。这是非常糟糕的用户体验。
我如何可以验证客户端上的MVC网站,用我的web api Token
我想象这样的功能在MVC网站:
pubic Action LogInWithToken(String token)
{
var user = GetUserFromToken(token);
var isAllowed = AuthenticateUserFromToken(user,token);
if(!isAllowed) return 401;
return CreateCookieForUser(user);
}
是在托管的Web阿比2应用程序与MVC 5应用程序相同的机器?
如果是,您可以手动反序列化令牌以获取用户的ID。请参阅Extract User details from web api auth token in MVC。
从那里,您可以自动在CookieAuthentication中登录用户。
但是,如果它们托管在不同的机器中,则必须在项目的Web.Config文件中指定相同的机器密钥。
他们托管在天蓝色的web服务上,我很想设计一个横向扩展的服务器,所以我不想依赖他们是同一台机器。您发送的链接要求我们更改API令牌以使用JWT。我怎样才能使用标准的API令牌来做到这一点。 – Zapnologica
您可以使用自定义授权属性,您可以在其中检查请求数据以及是否存在令牌,然后验证用户。检查[这里](https://msdn.microsoft.com/en-us/library/ee707357(v = vs.91).aspx)并在这方面进行搜索。 –
可能的重复 - https://stackoverflow.com/questions/38661090/token-based-authentication-in-web-api-without-any-user-interface –
@SivaGopal是的,我可以做到这一点。但你如何解密令牌?我仍然需要一种方法来获取'string token'并从令牌获取用户和时间戳。 – Zapnologica