16

それで、Swagger を使い始めました。私はその機能に完全に恋をしていますが、すべてのメソッドが公開されているかどうかについては疑問があります。

私が理解している限り、Swaschbuclke の「認証」メソッドに含まれているものはすべて、実際には API 自体に関するものですが、そこに助けは必要ありません。すべての API は API ID/キー ペアによって保護されています。

どうにかして ASP.NET Identity (ログイン システム) を利用して、API ページ (/swagger/ui/index) へのアクセスを制限したいと考えています。

何か方法はありますか?Swaschbuckle のメソッドはありますか? ルート/アイデンティティハックはありますか?

どんな助けでも大歓迎です。

編集 1:[ApiExplorerSettings(IgnoreApi = true)]属性は私が探しているものではありません。ID に関係なく、メソッドへのすべてのアクセスを制限します。

4

3 に答える 3

24

Swagger ドキュメントでの個々の API の公開の制限について:

スワッシュバックル 5.x:

Swashbuckle 5.x には、IgnoreObsoleteActions (設定する必要があります。デフォルトでは有効になっていません) という構成オプションがあり、[Obsolete]属性がある場合にアクションを非表示にします。

例: 構成

httpConfiguration
    .EnableSwagger(c =>
        {
            c.IgnoreObsoleteActions();
        });

詳細については、ドキュメントを参照してください。

Swashbuckle 4.1.x (または obsolete 属性を使用したくない場合):

Swashbuckle は IApiExplorer の上にswaggerドキュメントを構築します。属性を追加できる必要があります -- [ApiExplorerSettings(IgnoreApi = true)]-- ApiExplorerSettings コントローラー クラスまたは個々のコントローラー メソッドを管理して、ドキュメントを生成するときにエクスプローラー (およびその後 Swashbuckle) がそれらを無視するようにします。

例: 個々のアクション

/// Ignore 'GetFoo' in documentation
public class FooBarController
{
    [ApiExplorerSettings(IgnoreApi = true)]
    public Bar GetFoo
    {
       ...
    }

    public Bar GetBar
    {
       ...
    }
}

例: コントローラ クラス

/// Ignore every controller method in FooBarController in documentation
[ApiExplorerSettings(IgnoreApi = true)]
public class FooBarController
{
    public Bar GetFoo
    {
       ...
    }

    public Bar GetBar
    {
       ...
    }
}

詳細については、このGitHub の問題を参照してください。私はこれを Swashbuckle 4.1.x で使用しました。

于 2015-10-16T17:42:38.070 に答える
2

プロジェクトのルートに「swagger」という名前の新しいフォルダーを作成しました。フォルダー名は、swagger ドキュメントの URL と一致する必要があります。

新しく作成されたフォルダーに新しい Web.config ファイルを追加しました。

<configuration> 
<system.web> 
<authorization> 
<deny users="?" /> 
</authorization> 
</system.web> 
<system.webServer> 
<modules runAllManagedModulesForAllRequests="true" /> 
</system.webServer> 
</configuration>

答えはここにあります

別のオプションは次のとおりです。

「私の頭の上では、ここで必要なのは DelegatingHandler だと思います。」

答えはここにあります

于 2015-11-13T20:27:26.290 に答える