Как указать тип неявного предоставления при аутентификации или запросе процесса с кодом авторизации в ядре aspnet? - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь реализовать аутентификацию gitlab в основном веб-приложении asp.net.и ниже код, который я написал в startup классе.Тем не менее, все работает нормально, пока меня не перенаправят туда, где в gitlab, где меня спрашивают, хочу ли я авторизовать приложение для доступа к моей информации gitlab.

 services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme = "GitLab";
            })
            .AddCookie()
            .AddOAuth("GitLab", options =>`enter code here`
            {
                options.ClientId = Configuration["GitLab:ClientId"];
                options.ClientSecret = Configuration["GitLab:ClientSecret"];
                options.CallbackPath = new PathString("/signin-gitlab");
                options.
                options.AuthorizationEndpoint = "https://gitlab.example.com/oauth/authorize";
                options.TokenEndpoint = "http://gitlab.example.com/oauth/token";
                options.UserInformationEndpoint = "https://gitlab.example.com/api/v4/user";
                options.ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "id");
                options.ClaimActions.MapJsonKey(ClaimTypes.Name, "name");
                options.Events = new OAuthEvents
                {
                    OnCreatingTicket = async context =>
                    {
                        var request = new HttpRequestMessage(HttpMethod.Get, context.Options.UserInformationEndpoint);
                        request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                        request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", context.AccessToken);

                        var response = await context.Backchannel.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, context.HttpContext.RequestAborted);
                        response.EnsureSuccessStatusCode();

                        var user = JObject.Parse(await response.Content.ReadAsStringAsync());

                        context.RunClaimActions(user);
                    }
                };
            });

, тогда меня перенаправляют на URL http://myapp.com/oauth/redirect?code=1234567890&state=YOUR_UNIQUE_STATE_HASH, откудая могу запросить токен из кода авторизации, и я искал в интернете, но не нашел ни шагов, ни ссылки на этот шаг.Также я не нашел ни одного учебника, в частности, об указании типа предоставления в авторизации.Буду признателен за любую помощь, если у кого-нибудь есть идея указать тип предоставления для неявного или последующего действия после получения кода авторизации?

...