Доступ к ресурсу API с неявным потоком - PullRequest
0 голосов
/ 30 апреля 2018

Разрешает ли идентификационный сервер 4 неявному потоку обращаться к ресурсу API.

Identity Server 4 config.cs

new Client
                {
                    ClientId = "implicit",
                    ClientName = "Implicit Client",
                    AllowAccessTokensViaBrowser = true,

                    RedirectUris = { "https://notused" },
                    PostLogoutRedirectUris = { "https://notused" },
                    FrontChannelLogoutUri = "http://localhost:5000/signout-idsrv", // for testing identityserver on localhost

                    AccessTokenLifetime = 10,
                    AllowedGrantTypes = GrantTypes.Implicit,
                    AllowedScopes = { "openid", "profile", "email", "ProxyServer", "api" }
                }

Api Resouce

new ApiResource("api", "Custom"),
new ApiResource("ProxyServer", "Proxy Server")

В Mvc Client я использую этот код ConfigureServices

services.AddAuthentication(options =>
            {
                options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme = "oidc";
            })
                .AddCookie(options =>
                {
                    options.ExpireTimeSpan = TimeSpan.FromMinutes(60);
                    options.Cookie.Name = "mvcimplicit";
                })
                .AddOpenIdConnect("oidc", options =>
                {
                    options.Authority = Constants.Authority;
                    options.RequireHttpsMetadata = false;

                    options.ClientId = "implicit";

                    options.Scope.Clear();
                    options.Scope.Add("openid");
                    options.Scope.Add("ProxyServer");
                    options.Scope.Add("profile");
                    options.Scope.Add("email");

                    options.SaveTokens = true;

                    options.TokenValidationParameters = new TokenValidationParameters
                    {
                        NameClaimType = JwtClaimTypes.Name,
                        RoleClaimType = JwtClaimTypes.Role,
                    };
                });

При попытке в браузере появляется сообщение «Извините, произошла ошибка: invalid_scope». Но если я удаляю options.Scope.Add ("ProxyServer"); работает нормально, и Identity Server 4 выводит меня на страницу входа.

1 Ответ

0 голосов
/ 30 апреля 2018

ОК. Я обнаружил проблему, но отправляю сообщения на тот случай, если кто-то еще столкнется с такой же проблемой.

Тип ответа должен быть указан явно, иначе он не будет работать.

options.ResponseType = "id_token token";

Измените тип ответа соответственно.

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