C#で書いた.NET Framework/Mono用SASLクライアントライブラリです。 IMAP4クライアントライブラリSmdn.Net.Imap4.ClientおよびPOP3クライアントライブラリSmdn.Net.Pop3.ClientにてSASLによる認証処理で使用しています。

§1 実装済み機能一覧

サポートするSASLメカニズムの一覧です。

RFC/document mechanism name status note
[RFC 1731] IMAP4 Authentication Mechanisms KERBEROS_V4 not implemented
[RFC 2195] IMAP/POP AUTHorize Extension for Simple Challenge/Response CRAM-MD5 implemented
[RFC 2444] The One-Time-Password SASL Mechanism OTP not implemented
[RFC 2444] The One-Time-Password SASL Mechanism SKEY not implemented
[RFC 2595] Using TLS with IMAP, POP3 and ACAP PLAIN implemented
[RFC 2808] The SecurID(r) SASL Mechanism SECURID not implemented
[RFC 2831] Using Digest Authentication as a SASL Mechanism DIGEST-MD5 partially implemented realmには対応していません。 また、サーバ側の実装によっては正しく動作しない可能性があります。
[RFC 3163] ISO/IEC 9798-3 Authentication SASL Mechanism 9798-U-RSA-SHA1-ENC not implemented
[RFC 3163] ISO/IEC 9798-3 Authentication SASL Mechanism 9798-M-RSA-SHA1-ENC not implemented
[RFC 3163] ISO/IEC 9798-3 Authentication SASL Mechanism 9798-U-DSA-SHA1 not implemented
[RFC 3163] ISO/IEC 9798-3 Authentication SASL Mechanism 9798-M-DSA-SHA1 not implemented
[RFC 3163] ISO/IEC 9798-3 Authentication SASL Mechanism 9798-U-ECDSA-SHA1 not implemented
[RFC 3163] ISO/IEC 9798-3 Authentication SASL Mechanism 9798-M-ECDSA-SHA1 not implemented
[RFC 4422] Simple Authentication and Security Layer (SASL) EXTERNAL not implemented
[RFC 4505] Anonymous Simple Authentication and Security Layer (SASL) Mechanism ANONYMOUS implemented
[RFC 4752] The Kerberos V5 ("GSSAPI") Simple Authentication and Security Layer (SASL) Mechanism GSSAPI not implemented
[MS-NLMP] NT LAN Manager (NTLM) Authentication Protocol Specification NTLM partially implemented サーバ側の実装によっては正しく動作しない可能性があります。
[draft-ietf-sasl-scram-11] urn:ietf:id:ietf-sasl-scram-11 SCRAM-* not implemented
[draft-ietf-sasl-scram-11] urn:ietf:id:ietf-sasl-scram-11 SCRAM-SHA-1 not implemented
[draft-ietf-sasl-scram-11] urn:ietf:id:ietf-sasl-scram-11 SCRAM-SHA-1-PLUS not implemented
The SASL XOAUTH2 Mechanism XOAUTH2 implemented
RFC mechanism name status note

使い方・認証処理の実装はSmdn.Net.Imap4.ClientおよびSmdn.Net.Pop3.Clientをご覧ください。 またデモ用アプリケーションMRAConnector, SimpleMailerもあわせてご覧ください。

§2 ダウンロード

すべてMIT X11ライセンスでのリリースとなります。

§3 不具合・要望・質問等

不具合の報告、ライブラリに対する要望や提案、使い方の質問などは掲示板へどうぞ。

§4 変更履歴

§4.1 1.00 (2014-04-23)

  • 修正・改善
    • .NET Framework 2.0のサポートを廃止
    • NTML認証の実装を更新
    • 上位ライブラリを更新
    • その他機能上の変更はなし

§4.2 0.33 (2013-07-15)

  • 機能追加
  • 修正・改善
    • SaslMechanismAttributeが継承されるように変更

§4.3 0.32 (2010-01-08)

  • 修正・改善
    • 上位ライブラリのインターフェイス変更にあわせて実装を修正

§4.4 0.31 (2010-12-11)

  • 修正・改善
    • ライブラリがスローするArgumentExceptionなどいくつかの例外メッセージをよりわかりやすい表記に統一
    • その他上位ライブラリのバグ等細かい修正

§4.5 0.30 (2010-05-15)

  • 機能追加
    • メカニズム名を取得するSaslClientMechanism.Nameプロパティを追加
    • 平文による認証が行われるかどうかを表すSaslClientMechanism.IsPlainTextプロパティを追加
  • 修正・改善
    • 未完成の実装を無効化

§4.6 0.29 (2010-04-25)

  • 機能追加
    • .NET Framework 2.0, 3.5, 4の各バージョン用のプロジェクトファイルを追加

§4.7 0.28 (2010-04-18)

  • 機能追加
    • 現在の状態を取得するためのプロパティSaslClientMechanism.ExchangeStatusを追加
    • SaslClientMechanism.ExchangeStatusがSucceededもしくはFailedの時にExchange()を呼ぼうとした場合にInvalidOperationExceptionをスローするようにした
  • 修正・改善
    • 上位ライブラリのインターフェイス変更にあわせて実装および参照アセンブリを修正
    • 例外クラスのインターフェイスをカスタム例外のガイドラインに適合するように改善

§4.8 0.27 (2010-04-04)

  • 機能追加
    • 例外クラスにSerializableAttributeを設定
  • 修正・改善
    • SaslExceptionの基底クラスをSystem.SystemExceptionに変更

§4.9 0.26 (2010-03-22)

  • 修正・改善
    • StringComparison.Ordinal*の動作を期待していた箇所でInvariantCulture*を使用していたのを修正

§4.10 0.25 (2010-02-15)

  • SaslClientMechanismを継承した任意のクラスを既知の認証メカニズムとして登録・使用できるようにした
  • NetworkCredentialの各プロパティがnullを返すことを期待していた実装を修正、nullではなくstring.Emptyの場合に認証をキャンセルするようにした

§4.11 0.24 (2010-02-06)

  • Mono.Security.dllがない環境でも動作するように、Mono.Security.Protocol.Ntlmの実装をインポート
  • 認証時に参照するNetworkCredentialのUserNameおよびPasswordプロパティがnullだった場合の動作を整理 (例外はスローせず認証をキャンセル)

§4.12 0.23 (2010-01-30)

  • initial client responseを取得するメソッドを追加 (RFC 4959, RFC 5034に対応するための拡張)

§4.13 0.22 (2010-01-23)

§4.14 0.21 (2009-12-16)

§5 制限事項・特記事項

  • 本ライブラリには、NTLM認証でのチャレンジレスポンスの実装として、Mono.Security.Protocol.Ntlmのクラスを含んでいます。
  • 実装にあたり、セキュリティ上の考慮はしていますが、十分な検証は行っていないため保証はできません。

§6 関連するページ

§7 関連リンク