如何实现returns session id 的WebApi 方法?
How to realize WebApi method that returns session id?
我想为移动应用程序实现一个具有 ASP.NET 身份的身份验证服务器。
但我不想使用默认的身份验证方法。
我想实现一个 WebApi 方法,该方法通过登录名和密码以及 returns 会话 ID 为用户创建会话。因此,在移动应用程序中,我将为每个对服务器的请求添加此会话 ID 作为 json 参数。
请给我一个例子,我该如何实现它?
我已阅读这篇文章 http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/,但我还需要一个 WebApi 方法来销毁会话,这是不可能的,因为它在那里描述。
首先:
您如何确保会话是 "destroyed"?
你不能确定。用户可能会失去互联网连接或硬关闭他的设备。
现在,回答你的问题..有点:
您需要的是一个过期的令牌。这将确保用户在一段时间后注销。您可以通过设置相对较短的过期时间来做到这一点,然后确保每次用户使用密钥访问 Web 服务时我都会重置。
Taiseer 关于 Bit of Tech 的教程非常棒,有助于理解身份框架和基于令牌的身份验证的基础知识。
Taiseer 在 Startup.cs 中配置 OAuth 时在他的访问令牌上设置过期时间:
public void ConfigureOAuth(IAppBuilder app)
{
OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1), //<---- Right here
Provider = new SimpleAuthorizationServerProvider()
};
// Token Generation
app.UseOAuthAuthorizationServer(OAuthServerOptions);
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
}
你可以这样做:
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(30)
那你就得想办法在每次使用时刷新令牌的生命周期。我目前没有给你的建议,但也许其他人有。您可以通过覆盖 AuthorizeAttribute 来做到这一点。
Taiseer 还有一个关于 RefreshTokens 的很棒的指南,可能会派上用场:
http://bitoftech.net/2014/07/16/enable-oauth-refresh-tokens-angularjs-app-using-asp-net-web-api-2-owin/
我想为移动应用程序实现一个具有 ASP.NET 身份的身份验证服务器。 但我不想使用默认的身份验证方法。 我想实现一个 WebApi 方法,该方法通过登录名和密码以及 returns 会话 ID 为用户创建会话。因此,在移动应用程序中,我将为每个对服务器的请求添加此会话 ID 作为 json 参数。
请给我一个例子,我该如何实现它? 我已阅读这篇文章 http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/,但我还需要一个 WebApi 方法来销毁会话,这是不可能的,因为它在那里描述。
首先: 您如何确保会话是 "destroyed"? 你不能确定。用户可能会失去互联网连接或硬关闭他的设备。
现在,回答你的问题..有点: 您需要的是一个过期的令牌。这将确保用户在一段时间后注销。您可以通过设置相对较短的过期时间来做到这一点,然后确保每次用户使用密钥访问 Web 服务时我都会重置。
Taiseer 关于 Bit of Tech 的教程非常棒,有助于理解身份框架和基于令牌的身份验证的基础知识。
Taiseer 在 Startup.cs 中配置 OAuth 时在他的访问令牌上设置过期时间:
public void ConfigureOAuth(IAppBuilder app)
{
OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1), //<---- Right here
Provider = new SimpleAuthorizationServerProvider()
};
// Token Generation
app.UseOAuthAuthorizationServer(OAuthServerOptions);
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
}
你可以这样做:
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(30)
那你就得想办法在每次使用时刷新令牌的生命周期。我目前没有给你的建议,但也许其他人有。您可以通过覆盖 AuthorizeAttribute 来做到这一点。
Taiseer 还有一个关于 RefreshTokens 的很棒的指南,可能会派上用场: http://bitoftech.net/2014/07/16/enable-oauth-refresh-tokens-angularjs-app-using-asp-net-web-api-2-owin/