当前位置: 首页 > 知识库问答 >
问题:

如何大摇大摆地显示WebApi OAuth令牌endpoint

毛峻
2023-03-14

我创建了一个新的Web Api项目,添加了ASP.NET标识并配置了OAuth,如下所示:

OAuthOptions = new OAuthAuthorizationServerOptions
{
    TokenEndpointPath = new PathString("/Token"),
    Provider = new ApplicationOAuthProvider(PublicClientId),
    AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
    AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
    AllowInsecureHttp = true
};

谢了。

另外,我应该说Swagger文档对我所有的控制器都适用,只是我忽略了一个明显的方法--如何登录。

共有1个答案

段干安和
2023-03-14

ApiExplorer不会自动为您的endpoint生成任何信息,因此您需要添加自定义DocumentFilter以便手动描述令牌endpoint。

https://github.com/domaindrivendev/swashbuckle/issues/332:

class AuthTokenOperation : IDocumentFilter
{
    public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
    {
        swaggerDoc.paths.Add("/auth/token", new PathItem
        {
            post = new Operation
            {
                tags = new List<string> { "Auth" },
                consumes = new List<string>
                {
                    "application/x-www-form-urlencoded"
                },
                parameters = new List<Parameter> {
                    new Parameter
                    {
                        type = "string",
                        name = "grant_type",
                        required = true,
                        @in = "formData"
                    },
                    new Parameter
                    {
                        type = "string",
                        name = "username",
                        required = false,
                        @in = "formData"
                    },
                    new Parameter
                    {
                        type = "string",
                        name = "password",
                        required = false,
                        @in = "formData"
                    }
                }
            }
        });
    }
}

httpConfig.EnableSwagger(c =>
{
    c.DocumentFilter<AuthTokenOperation>();
});
 类似资料:
  • 我们在我们的泽西应用程序中使用了@Role允许注释来限制用户对应用编程接口某些部分的访问。我们如何在SwaggerUI中显示这些信息? 到目前为止,我已经用@ApiOperation注释了方法以显示in/out参数,并尝试使用@Authorization/@AuthorizationScope,但我只为我们不使用的oauth2显示了它。最接近out case的是ApiKeyAuthDefiniti

  • 我正在使用Swagger创建一个文档页面,我想自动添加从正确的调用中收到的访问令牌。我试着用它 接收和存储令牌,以及 但是,要通过标头将其传递到后续请求,这只适用于一次调用,之后令牌将恢复为<code>null</code>。 如何防止值被还原?

  • 我有一个java项目(tomcat webapp)和一些REST Api。我想为他们生成大摇大摆的文档。我从本教程(github)开始。我没有maven我们使用蚂蚁任务。我加入了swagger-annotations-1.5.0。jar和所有随swagger jaxrs jar 1.5.0版本附带的jar(如果有用的话,我可以包括一个完整的列表),我已经注释了一些方法,我有一个如下的配置类: }

  • 我成功地在Spring boot应用程序上应用了swagger ui,并能够使用http://localhost:8181/swagger-用户界面。html 过了一段时间,我继续写我的申请,现在它不见了。我没有拿走任何罐子。我添加了一个应用程序启动类,当我在Wildfly 10上部署时,该类用于在启动时加载一些东西。 即使我尝试用tomcat将其作为Spring boot应用程序运行,也无法运行

  • 我有这个控制器和操作方法: 下面是模型: 我需要使用<code>Location</code>作为URL中的查询参数名称,以便按预期到达endpoint。 例如< code > http://localhost/API/Appointment/Company/available slots?位置=SYD 然而,当我查看Swagger页面时,该参数被称为<code>Model。位置,这让我的API的

  • 我有一个Spring应用程序,其中公开了两个rest接口供使用。一个是内部开发人员,另一个是客户。 Swagger确实生成了一个很好的文档,可以在/Swagger ui下访问。html 在此URL下显示内部和外部用户的文档。 以下是我的代码设置: 现在,我想把这些昂首阔步的文档分开。这样我们的内部开发人员就可以像 /留档/私有/swagger-ui.html和 /留档/公共/api-v1.html