2013-04-18 38 views
9

)誰でもC#でカスタムWindows資格プロバイダを作成しましたか? Windows SDKに含まれているサンプルは、すべてC++で提供されています。私が行った最初の検索では可能かもしれないが、それを確認した人はいないようだ。Windows資格情報プロバイダ(C#

+1

で書かれた作業資格プロバイダを、持っているだろう、私はわからないんだけどコードかどうか。なぜ私は管理コードでこれを記述したいのですが、試してみるのは難しくありません。すべてのWin32関数に多くのP/Invoke定義を記述する必要があります。 C++の知識に応じて、より適切な言語で書くだけではなく、時間を無駄にするかもしれません。 –

答えて

10

+1のpginaです。 Codyによると、資格プロバイダの作成に使用できる管理APIはありません.pInvokeルートに移動する場合は、資格プロバイダを把握するよりも、pInvokeの問題のトラブルシューティングに多くの時間がかかります。

ここでpGinaは素晴らしいプラグインアーキテクチャを持ち、プラグインがマネージコードで書かれていることを助けることができます。チャートhereを参照してください。 pGinaはLogonUI(ネイティブコード)との通信を処理しますが、プラグイン(管理)を使用して実際の認証を行います。これはおそらく制御したいものです(そうでなければ、独自の認証プロバイダは必要ありません)。

2

pGinaをご覧ください。私はそれを使用して遊んでいたし、それは私のWindows 8のインストールで正常に動作するように見えるので、あまりにも前にすべてのWindowsのバージョンでうまくいくはずです。それはかなり初期段階ですが、プロジェクトのネイティブな部分を掘り下げずにカスタムUIを作成する方法はありません。お役に立てれば!

[編集]ちょうどCody Grayのコメントをもう一度読んでください。明確にするために、pGinaは本当にあなたのために書かれたネイティブコードです。しかし、ええ、あなたはおそらくC++でそれを書いた方がより多くのコントロールを持っていますが、それがどのように提示されるかについてあまりコントロールする必要がなければ、pGinaが行く方法です。

4

Windows Vista以降の新しいCredentialProviderモデルは、COMに基づいています。これは、正しいCOMインターフェイスを実装している限り可能であることを意味します。

古いGINAモジュールはCOMインターフェイスの代わりにDLLのエントリポイントと関数ポインタを使用していたため、古いGINAモデルよりビルドする方が簡単でした。

  1. ICredentialProviderインタフェースのC#の定義を構築し、正しいCOMが正しいのGUID
  2. を持つ属性の追加:

    COMとの相互運用には、.NETのための能力を考えると、それは同じくらい簡単にする必要があります

  3. のWindowsを使用して新しいするCredentialProviderを登録するには、正しいレジストリキーを追加します。regasm
  4. で新しいアセンブリを登録ICredenitalProviderを実装してのComVisibleとしてマークされた資格情報プロバイダクラス(真)
  5. の構築(ソフトウェア\マイクロソフト\ Windowsの\ CurrentVersionの\認証\資格情報プロバイダ)

これは管理から動作するかどうか、あなたはそのすべてを行う場合は、C#の

関連する問題