さて、セットアップの背景について少し説明します。
私は現在、この安らかなAPIのサーバー側であるWebApi2プロジェクトを持っています。クライアントは現在、ユーザー名とパスワードの組み合わせを使用してベアラートークンを取得します。このトークンは、後続のAPI呼び出しで使用されます。プロジェクトはGitHubのプライベートプロジェクトに保存されます。
このAPIを利用するac#Windowsサービスを構築してデプロイしようとしています。このWindowsサービスと一緒にクレデンシャルを展開/保存することに関するベストプラクティスは何でしょうか。
私はAPIの両端を制御し、Windowsサービスの展開も制御します。これはmsiとしてパッケージ化され、一部のサードパーティソフトウェア(自動化)を介して展開されます。
要件は次のとおりです
だから私の質問は、プレーンテキストではなく使用可能な形式で、どのようにAPIクレデンシャルをクライアントに取得するのですか?
または、APIの別のタイプの認証を検討する必要がありますか?私はoauth2を簡単に調べましたが、私が知る限り、クライアント側の誰かが受け入れる必要がありますか?
誰かがこれを達成する方法についてアドバイスやリソースを持っているなら、それは素晴らしいでしょう。
私は専門家ではありませんが、同様のケースがありました。私はチャンスをつかんで反対票を獲得します:0)
デスクトップ/サービスアプリケーションの1つのアプローチは、ユーザーに資格情報の入力を求めることです。可能であれば、これが最善の方法です。ユーザーが一度でもクレデンシャルを入力できる場合は、ProtectedDataを使用して暗号化されたデータを保存できます(このクラスを使用すると、暗号化キーをコードに保存する必要がなく、非常に簡単に抽出できます(リフレクターを使用...)) 。
ただし、これを自動的に実行して資格情報を保存する場合は、これを行うための適切な方法はありません。クレデンシャルを難読化し、スクリプトキディがそれらを見るのを防ぐことができますが、より深刻なハッカーにとっては、ハッキングするのはかなり簡単です。
他にもいくつかのオプションがありますが、それらはすべてハッキング可能です。別のアプローチは、サーバー上の各マシンをMACアドレスとランダムな文字列(GUIDがジョブを実行します)で登録することです。これはProtectedDataクラスを使用して保存され、この特定のキーと値のペアのみがデータを取得できます。あなたのAPI。ここには2つの問題があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加