【问题标题】:Handling authentication/authorization: ASP.NET Core Web Application => ASP.NET Core Web API => SQL处理身份验证/授权:ASP.NET Core Web 应用程序 => ASP.NET Core Web API => SQL
【发布时间】:2020-10-21 19:12:38
【问题描述】:
我目前正在尝试找出使用 ASP.NET Core 为新的外部 Web 应用程序和 Web 服务应用程序处理身份验证的最佳方法。这是一般设置:
- 用户名/密码存储在 SQL Server 数据库中
- Web 应用程序仅调用 Web 服务
- Web 服务 (Web API) 调用数据库并将数据返回到 Web 应用程序
所以想法是用户登录一次并使用内置的 cookie 身份验证提供程序将保持登录状态。但是,我想将该身份验证令牌或其他任何内容传递给 Web 服务应用程序,并让它在其下运行该用户的适当安全上下文。我一直在寻找与此设计相似的示例,但没有找到一个好的示例。任何人都可以提出任何高级建议或指出一些有用的资源来帮助我实现这个设计吗?
【问题讨论】:
标签:
c#
asp.net
asp.net-core
asp.net-web-api
【解决方案1】:
以asp.net core MVC和web api为例,将登录页面放在web应用中。将 cookie 身份验证放在 web api 中。用户登录后通过web api申请token,token会保存在浏览器的cookie缓存中。
这是cookie配置。在 Startup.cs (web api) 中。
services.AddAuthentication("scheme")
.AddCookie("scheme", options =>
{
options.Cookie.Name = "authname";
});
如果token申请成功,会写入浏览器。
然后我添加一个获取 cookie 令牌的操作。
[Route("getTocken")]
public string getTocken( )
{
string cookie ="";
HttpContext.Request.Cookies.TryGetValue("authname", out
cookie);
return cookie;
}
这是结果。
这个cookie令牌可以保存在会话中以维护状态。