针对 Web 的网站身份验证 API
Web site Authentication against Web API
我有以下使用 net core 3 的场景。一个带有登录页面的网站。此登录页面将用户和密码发送到 Web API,如果凭据正确,该 Web API 会使用 JWT 令牌进行响应。
现在如何将我的网络用户设置为已验证?如何使用从 API 令牌收到的声明设置网络用户的声明?
是否需要在启动时添加任何类似的服务?
您能否向我提供有关如何操作的任何基本示例或任何文档?
谢谢
根据您的前端解决方案,您需要弄清楚如何解码收到的 JWT 以检索所需的值。
这里有几件事,同样取决于您在前端使用的是什么
C#
https://developer.okta.com/blog/2019/06/26/decode-jwt-in-csharp-for-authorization
SPA 的 NPM 包
https://www.npmjs.com/package/jwt-decode
这是 JWT 的另一个好资源
https://jwt.io/
您可以拿着收到的 JWT 查看里面的值
您可以使用 cookie authentication :
在Startup.ConfigureServices
方法中,使用AddAuthentication
和AddCookie
方法创建身份验证中间件服务:
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = "/Account/Login";
});
并在Configure
中启用中间件:
app.UseAuthentication();
app.UseAuthorization();
并且在用户post凭据到的操作中,您可以使用凭据向网络api发送http请求,网络api将验证凭据和 return 返回 jwt 令牌,然后您的 Web 应用程序解码令牌并登录用户,例如:
var stream = "[token]";
var handler = new JwtSecurityTokenHandler();
var tokenS = handler.ReadToken(stream) as JwtSecurityToken;
var claimsIdentity = new ClaimsIdentity(
tokenS.Claims, CookieAuthenticationDefaults.AuthenticationScheme);
var authProperties = new AuthenticationProperties
{
RedirectUri = "/Home/Privacy",
};
await HttpContext.SignInAsync(
CookieAuthenticationDefaults.AuthenticationScheme,
new ClaimsPrincipal(claimsIdentity),
authProperties);
我有以下使用 net core 3 的场景。一个带有登录页面的网站。此登录页面将用户和密码发送到 Web API,如果凭据正确,该 Web API 会使用 JWT 令牌进行响应。
现在如何将我的网络用户设置为已验证?如何使用从 API 令牌收到的声明设置网络用户的声明?
是否需要在启动时添加任何类似的服务?
您能否向我提供有关如何操作的任何基本示例或任何文档?
谢谢
根据您的前端解决方案,您需要弄清楚如何解码收到的 JWT 以检索所需的值。
这里有几件事,同样取决于您在前端使用的是什么
C# https://developer.okta.com/blog/2019/06/26/decode-jwt-in-csharp-for-authorization
SPA 的 NPM 包 https://www.npmjs.com/package/jwt-decode
这是 JWT 的另一个好资源 https://jwt.io/
您可以拿着收到的 JWT 查看里面的值
您可以使用 cookie authentication :
在
Startup.ConfigureServices
方法中,使用AddAuthentication
和AddCookie
方法创建身份验证中间件服务:services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(options => { options.LoginPath = "/Account/Login"; });
并在
Configure
中启用中间件:app.UseAuthentication(); app.UseAuthorization();
并且在用户post凭据到的操作中,您可以使用凭据向网络api发送http请求,网络api将验证凭据和 return 返回 jwt 令牌,然后您的 Web 应用程序解码令牌并登录用户,例如:
var stream = "[token]"; var handler = new JwtSecurityTokenHandler(); var tokenS = handler.ReadToken(stream) as JwtSecurityToken; var claimsIdentity = new ClaimsIdentity( tokenS.Claims, CookieAuthenticationDefaults.AuthenticationScheme); var authProperties = new AuthenticationProperties { RedirectUri = "/Home/Privacy", }; await HttpContext.SignInAsync( CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(claimsIdentity), authProperties);