Я создал собственный файл SwaggerUI (index.html) в приложении ReactJS, который доступен по адресу myapplication.com/docs/swagger/index.html. Поскольку маршрут проходит через /docs/, применяется аутентификация STS. Однако SwaggerUI извлекает данные из конечной точки /swagger/v1/swagger.json, которая в настоящее время незащищена, что позволяет любому получить к ней доступ по адресу myapplication.com/swagger/v1/swagger.json. Как я могу защитить эту конечную точку в .NET 8?
ReactJS:
App.tsx
import React, { useState } from 'react'
import SwaggerUI from 'swagger-ui-react'
import 'swagger-ui-react/swagger-ui.css'
import { GettingStartedSection } from 'sections/getting-started'
const App = () => {
const [activeItem, setActiveItem] = useState('getting-started')
return (
)
}
export default App
root-app.tsx
import React from 'react'
import { Route, BrowserRouter, Switch } from 'react-router-dom'
import { AuthContextProvider } from './contexts/auth.context'
import { AuthzContextProvider } from './contexts/authz.context'
import { UserContextProvider } from './contexts/user'
import { AuthCallbackPage, LogoutCallbackPage, LogoutPage, SilentRenewPage } from './pages/auth'
import { AuthorizedRoute } from './routes/authorized-route'
import App from './App'
const RootApp = () => {
const returnEmptyComponent = () =>
return (
)
}
export default RootApp
Код C#:
app.UseSwagger();
app.UseSwaggerUI(options =>
{
// build a swagger endpoint for each discovered API version
bool isPathPrefixDefined = !string.IsNullOrWhiteSpace(swaggerOptions?.PathPrefix);
if (isPathPrefixDefined)
{
foreach (var description in provider.ApiVersionDescriptions)
{
options.SwaggerEndpoint($"{swaggerOptions.PathPrefix}/swagger/{description.GroupName}/swagger.json",
$"{swaggerOptions.GeneratedJsonName} {description.GroupName.ToUpperInvariant()}");
}
}
else
{
foreach (var description in provider.ApiVersionDescriptions)
{
options.SwaggerEndpoint($"/swagger/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant());
}
}
if (swaggerOptions.IncludeAuthentication)
{
options.OAuthClientId(swaggerOptions.SecurityDefinition.ClientId);
options.OAuthClientSecret(swaggerOptions.SecurityDefinition.ClientSecret);
}
});
Подробнее здесь: https://stackoverflow.com/questions/790 ... e-in-net-8
Как защитить маршрут swagger/1.0/swagger.json в .NET 8? ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение