Я пытаюсь реализовать аутентификацию 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
, откудая могу запросить токен из кода авторизации, и я искал в интернете, но не нашел ни шагов, ни ссылки на этот шаг.Также я не нашел ни одного учебника, в частности, об указании типа предоставления в авторизации.Буду признателен за любую помощь, если у кого-нибудь есть идея указать тип предоставления для неявного или последующего действия после получения кода авторизации?