.Net Core 3.1 作为独立的身份服务器

.Net Core 3.1 as a standalone Identity Server

我想使用 .Net Core 3.1 Web 应用程序来允许应用程序(例如 iPhone 或 Web Javascript)使用用户名和密码进行身份验证并接收 Jason Web 令牌( JWT)包含关于用户的声明...如果成功,则 JWT 可以作为承载令牌发送到 API,后者将解码和验证 JWT(令牌将是不对称的并使用 public/private 密钥对)并检索任何嵌入的声明...如果应用程序也可以解码 JWT 以检索任何声明,这可能是一个奖励。

想知道这种方法是否可行吗?而且,如果有任何关于如何做到这一点的讨论或例子,那就太好了。

看看 IdentityServer4 提供的示例。 sample/quickstart 包括您描述的情况。 https://github.com/IdentityServer/IdentityServer4/tree/main/samples/Quickstarts/6_AspNetIdentity/src

API 需要是 IdentityServer4 配置中的范围。它与权限(IdentityServer4)有联系:

services.AddAuthentication("Bearer")
                .AddJwtBearer("Bearer", options =>
                {
                    options.Authority = "https://localhost:5001";
                    
                    options.TokenValidationParameters = new TokenValidationParameters
                    {
                        ValidateAudience = false
                    };
                });

客户端,在此示例中为 MVC 客户端,需要是 IdentityServer4 中的客户端。有许多类型的 GrantType。 https://identityserver4.readthedocs.io/en/latest/topics/grant_types.html

services.AddAuthentication(options =>
            {
                options.DefaultScheme = "Cookies";
                options.DefaultChallengeScheme = "oidc";
            })
            .AddCookie("Cookies")
            .AddOpenIdConnect("oidc", options =>
            {
                options.Authority = "https://localhost:5001";

                options.ClientId = "mvc";
                options.ClientSecret = "secret";
                options.ResponseType = "code";
                
                options.Scope.Add("api1");

                options.SaveTokens = true;
            });

希望这对你有所帮助