Мы создаем оболочку Web API для MS Graph API.
Я хочу использовать Swagger для тестирования моих API. Но я не могу получить правильную конфигурацию. Я продолжаю получать Плохой Запрос и никакой другой подсказки. Я не могу установить Fiddler или другие инструменты на этот корпоративный ноутбук, чтобы помочь мне провести расследование.
Вот ошибка
А вот код для настройки Swagger:
app.UseSwaggerUi3WithApiExplorer(settings =>
{
settings.GeneratorSettings.DefaultPropertyNameHandling = PropertyNameHandling.CamelCase;
settings.PostProcess = document =>
{
document.Info.Title = "App title";
document.Info.Description = "App description";
};
settings.OAuth2Client = new OAuth2ClientSettings
{
ClientId = [clientid]
ClientSecret = [clientsecret]
AppName = "app_name",
};
settings.OAuth2Client.AdditionalQueryStringParameters.Add("response_type", "code id_token");
settings.OAuth2Client.AdditionalQueryStringParameters.Add("nonce", "AnyValueShouldBeRandom");
settings.GeneratorSettings.DocumentProcessors.Add(new SecurityDefinitionAppender("Auth Token", new SwaggerSecurityScheme
{
Type = SwaggerSecuritySchemeType.OpenIdConnect,
Description = "Swagger OAuth2",
OpenIdConnectUrl = "https://login.microsoftonline.com/[tenantid]/v2.0/.well-known/openid-configuration",
Flow = SwaggerOAuth2Flow.Implicit,
AuthorizationUrl = "https://login.microsoftonline.com/[tenantid]/oauth2/v2.0/authorize",
TokenUrl = "https://login.microsoftonline.com/[tenantid]/oauth2/v2.0/token",
In = SwaggerSecurityApiKeyLocation.Header,
Scopes = new Dictionary<string, string>
{
{ "api://[api]/user_impersonation", "" },
{ "user.read", "" },
{ "openid", "" },
{ "email", "" },
{ "profile", "" },
{ "roles", "" }
}
}));
settings.GeneratorSettings.OperationProcessors.Add(new OperationSecurityScopeProcessor("oauth2"));
});
У меня вопрос, что я делаю не так?
Я боролся с этим с этого утра. Любая помощь с благодарностью.
Спасибо!
ОБНОВЛЕНИЕ 3/21/2019
Я понял это.
изменить это с
Type = SwaggerSecuritySchemeType.OpenIdConnect
до
Type = SwaggerSecuritySchemeType.OAuth2
Я также удалил кучу вещей вроде строк ff
settings.OAuth2Client.AdditionalQueryStringParameters.Add("response_type", "code id_token");
settings.OAuth2Client.AdditionalQueryStringParameters.Add("nonce", "AnyValueShouldBeRandom");
Сейчас работает.
По крайней мере, снаружи.
Swagger говорит мне, что я уже аутентифицирован:
НО, когда я запускаю приложение, HttpContext.User.Identity.IsAuthenticated говорит мне, что я не.
Тот же вопрос: что я делаю не так?