我需要调用自定义身份验证服务,而不是使用forms authentication
或windows authentication
。如果身份验证成功,此服务将返回一个JSON对象,其中包含有关用户的信息。
我如何在ASP.NET MVC 5中集成它?
例如:有没有办法可以简单地覆盖ASP.NET安全管道中的身份验证步骤,仍然使用授权部分。我该怎么做?
答案 0 :(得分:0)
我最终创建了一个没有身份验证的新MVC应用程序。然后我创建了一个挂钩到ASP.NET请求管道(https://msdn.microsoft.com/en-us/library/bb470252.aspx)
的自定义模块public class MyAuthModule : IHttpModule
{
public void Dispose()
{
// Implement when you need to release unmanaged resources
}
public void Init(HttpApplication context)
{
context.AuthenticateRequest += Context_AuthenticateRequest;
context.PostAuthenticateRequest += Context_PostAuthenticateRequest;
}
private void Context_AuthenticateRequest(object sender, EventArgs e)
{
// Call custom library to authenticate
// and create a new ClaimsPrincipal with the info from the JSON object.
}
private void Context_PostAuthenticateRequest(object sender, EventArgs e)
{
// Optional: Inspect the ClaimsPrincipal and add more claims
}
}
然后在web.config中注册此模块:
<system.webServer>
<modules>
<add name="MyAuthModule"
type="MvcDemo.Auth.MyAuthModule, MvcDemo" />
</modules>
</system.webServer>