使用身份调用 Web Api

Call Web Api with Identity

我正在寻找,但似乎找不到答案。基本上我有一个 web API 可以进行身份​​验证并生成一个令牌,新的客户端应用程序将在其中发送凭据并接收一个令牌,然后我想将身份用于 UserManager 实现。但是,当创建一个具有身份(个人帐户)的新 asp.net 核心时,我必须直接创建一个 DbContext 和一个数据库。

我很好奇是否有教程,或者是否有可能在客户端没有自己的数据库的情况下调用身份并仅调用接收 JWT 响应的网络 API。

可能是我理解错了

Asp Net Identity 支持基于 jwt-token 的授权和认证,但不支持生成 jwt 令牌。您可以使用 Auth0 等第三方服务在您的网站中实现用户数据库和令牌生成 api。如果你想自己实现它(这对教学来说是个好主意,但对现实世界不利)有一个很好的 article for asp net core 2.0,但它适用于 3.1 稍作改动.

需要一个数据库来存储有关您的用户及其声明的信息。您将需要注册一个身份验证中间件,以便在用户的 Web 浏览器上维护您的身份令牌和声明。用于使用 JWT 的常见中间件是 OpenID Connect。下面是一个例子:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();

    // Allow sign in via an OpenId Connect provider
    services.AddAuthentication(options => {
        options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
        options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
    })
    .AddCookie(options => {
        options.LoginPath = "/Account/Login/";
    })
    .AddOpenIdConnect(options =>
    {
        options.ClientId = Configuration["oidc:clientid"];
        options.ClientSecret = Configuration["oidc:clientsecret"];
        options.Authority = Configuration["oidc:authority"];

        options.ResponseType = "code";
        options.GetClaimsFromUserInfoEndpoint = true;
    });
}

此外,另一个选项是 IdentityServer4,它支持 OpenID Connect、OAuth2 和 SAML2 with Sustainsys.Saml2。 IdentityServer4 可以充当生成 JWT、OAuth2 参考令牌或 SAML2 响应的完整身份提供者。