20

OAuth2 を使用する API のドキュメント/テスト ツールとして swagger を使用することはできますか? Swagger サイト (または他の場所) には何も表示されません。私が見たすべての使用法は、API キー、HTTP Basic、または Cookie のいずれかを使用しています。

4

5 に答える 5

5

私も同じ方針で仕事をしてきました。Swagger は、任意のヘッダーまたは URL で定義された API キーまたはトークンを受け入れます。API とアプリに検証ヘルパーを追加することは、標準的なアプローチです。

Oauth では、ハンドシェイク認証プロセスを開始するために、HTML レビューまたはログインが必要です。つまり、swagger API は、標準のログインとスコープの受け入れのために Web インターフェイスをサポートする必要があります。oauth を swagger にロールバックすると、いくつかのロジック ループが発生し、長期的にはサポートが容易ではありません。

私たちが検討している別のアプローチは、API が多数の異なる oauth プロバイダーのアクセス トークンを処理および保存できるようにするオプションです。GitHub、ツイッター、フェイスブック。これにより、ログイン ループも発生する可能性があります。

于 2013-03-02T14:51:14.423 に答える
5

ここでパーティーに遅れましたが、oAuth サポートは現在、swagger -coreの 1.3.0-RC1 にあります。昨日、swagger -jsで oAuth に対応した JavaScript ライブラリがリリースされました。最後に、 swagger -uiは開発段階にあり、まもなく oAuth の暗黙的およびサーバー フローが実装されます。

于 2013-07-10T22:43:54.650 に答える
3

@fehguy によって引用されたブログの投稿http://developers-blog.helloreverb.com/enabling-oauth-with-swagger/は、swagger によって生成された json に認証データを含める Java コードの例を示していますが、私の質問はSpring、JAXRS、および CXF を使用するアプリに含める必要があります。CXF + JAXRS サンプルで見つかりませんでした: https://github.com/swagger-api/swagger-core/tree/master/samples/java-jaxrs-cxf

しかし、もう少し探して、落とし穴 !

https://github.com/swagger-api/swagger-core/blob/master/samples/java-jersey-spring/src/main/resources/beans-asset-ws.xml

Bootstrap (HttpServlet を拡張) と呼ばれるクラスと静的ブロックを持つ Bean を含める必要があります。

意見: おそらく、サーブレットの静的ブロックではなく、Rest クラスの SwaggerConfig スキャナーによって注釈からロードされる方が、より「スプリングに適した」ものになるでしょう。

于 2015-01-13T13:54:01.190 に答える
0
@Configuration
public class SwaggerConfiguration {

    @Bean
    @DependsOn("jaxRsServer") //org.apache.cxf.endpoint.Server bean
    public ServletContextInitializer initializer() {
        return new ServletContextInitializer() {
            @Override
            public void onStartup(ServletContext servletContext) throws ServletException {
                BeanConfig scanner = (BeanConfig) ScannerFactory.getScanner();
                Swagger swagger = scanner.getSwagger();
                servletContext.setAttribute("swagger", swagger);
            }
        };
    }

    @Bean
    public Feature swaggerFeature() {
        XSwagger2Feature feature = new XSwagger2Feature();

        return feature;
    }

    @Bean
    public FilterRegistrationBean swaggerApiFilter() {
        ApiOriginFilter filter = new ApiOriginFilter();

        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(filter);
        registrationBean.setOrder(Ordered.HIGHEST_PRECEDENCE);

        return registrationBean;
    }

    public static class XSwagger2Feature extends Swagger2Feature {

        @Override
        protected void addSwaggerResource(Server server) {
            super.addSwaggerResource(server);

            BeanConfig scanner = (BeanConfig) ScannerFactory.getScanner();
            Swagger swagger = scanner.getSwagger();
            swagger.securityDefinition("api_key", new ApiKeyAuthDefinition("api_key", In.HEADER));
            swagger.securityDefinition("petstore_auth", 
              new OAuth2Definition()
                .implicit("http://petstore.swagger.io/api/oauth/dialog")
                .scope("read:pets", "read your pets")
                .scope("write:pets", "modify pets in your account"));
        }

    }

}
于 2015-12-01T12:29:44.690 に答える
-1

mashery のIOdocsは OAuth をサポートしているようですが、swagger (redis、node など) とはかなり異なります。githubで入手できます。

于 2013-05-14T18:54:29.053 に答える