. Net Core 3.1 как автономный сервер идентификации - PullRequest
1 голос
/ 12 июля 2020

Я хотел бы использовать веб-приложение. Net Core 3.1, чтобы разрешить приложению (например, iPhone или Web Javascript) аутентифицироваться с помощью имени пользователя и пароля и получать веб-токен Jason (JWT), содержащий утверждения о пользователе ... в случае успеха JWT может быть отправлен в качестве токена-носителя в API, который будет декодировать и проверять JWT (токен будет асимметричным c и будет использовать пару открытого / закрытого ключей) и получить любые встроенные утверждения ... возможно, бонус, если бы приложение могло также декодировать JWT, чтобы получить любые утверждения.

Есть какие-нибудь мысли о том, возможен ли этот подход? И, если есть какие-то обсуждения или примеры того, как это можно сделать, это будет ужасно c.

введите описание изображения здесь

1 Ответ

0 голосов
/ 12 июля 2020

Взгляните на примеры, которые предоставляет IdentityServer4. Этот образец / краткое руководство включает случай, который вы описываете. 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 Client, должен быть клиентом в IdentityServer4. Есть много типов GrantTypes. 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;
            });

Надеюсь, это вам поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...