/// <summary> /// Creates an ExtendedRequest packet. /// </summary> /// <param name="context">The user context which contains message ID.</param> /// <param name="requestName">The request name of the extended operation.</param> /// <param name="requestValue">The request value of the extended operation.</param> /// <returns>The packet that contains the request.</returns> internal override AdtsExtendedRequestPacket CreateExtendedRequest( AdtsLdapContext context, string requestName, byte[] requestValue) { ExtendedRequest extendedRequest = new ExtendedRequest( new LDAPOID(requestName ?? string.Empty), new Asn1OctetString(requestValue)); LDAPMessage_protocolOp operation = new LDAPMessage_protocolOp(); operation.SetData(LDAPMessage_protocolOp.extendedReq, extendedRequest); LDAPMessage message = new LDAPMessage(new MessageID(context.MessageId), operation, null); AdtsExtendedRequestPacket packet = new AdtsExtendedRequestPacket(); packet.ldapMessagev3 = message; packet.messageId = context.MessageId; return packet; }
public void RequestId_Set_GetReturnsExpected() { var request = new ExtendedRequest { RequestId = "Id" }; Assert.Equal("Id", request.RequestId); }
public void RequestValue_Set_GetReturnsExpected() { var request = new ExtendedRequest { RequestValue = new byte[] { 1, 2, 3 } }; Assert.Equal(new byte[] { 1, 2, 3 }, request.RequestValue); }
public void RequestName_Set_GetReturnsExpected() { var request = new ExtendedRequest { RequestName = "RequestName" }; Assert.Equal("RequestName", request.RequestName); }
public void Ctor_RequestName(string requestName) { var request = new ExtendedRequest(requestName); Assert.Empty(request.Controls); Assert.Null(request.RequestId); Assert.Equal(requestName, request.RequestName); Assert.Empty(request.RequestValue); }
public void Ctor_Default() { var request = new ExtendedRequest(); Assert.Empty(request.Controls); Assert.Null(request.RequestId); Assert.Null(request.RequestName); Assert.Empty(request.RequestValue); }
public void Ctor_RequestName_RequestValue(string requestName, byte[] requestValue) { var request = new ExtendedRequest(requestName, requestValue); Assert.Empty(request.Controls); Assert.Null(request.RequestId); Assert.Equal(requestName, request.RequestName); Assert.NotSame(requestValue, request.RequestValue); Assert.Equal(requestValue ?? Array.Empty<byte>(), request.RequestValue); }
/// <summary> /// Creates an ExtendedRequest packet. /// </summary> /// <param name="context">The user context which contains message ID.</param> /// <param name="requestName">The request name of the extended operation.</param> /// <param name="requestValue">The request value of the extended operation.</param> /// <returns>The packet that contains the request.</returns> internal override AdtsExtendedRequestPacket CreateExtendedRequest( AdtsLdapContext context, string requestName, byte[] requestValue) { ExtendedRequest extendedRequest = new ExtendedRequest( new LDAPOID(requestName ?? string.Empty), new Asn1OctetString(requestValue)); LDAPMessage_protocolOp operation = new LDAPMessage_protocolOp(); operation.SetData(LDAPMessage_protocolOp.extendedReq, extendedRequest); LDAPMessage message = new LDAPMessage(new MessageID(context.MessageId), operation, null); AdtsExtendedRequestPacket packet = new AdtsExtendedRequestPacket(); packet.ldapMessagev3 = message; packet.messageId = context.MessageId; return(packet); }
public void RequestShort(ExtendedRequest request) { PendingCommands.Add(new UsbCommand((byte)request)); }
/// <summary> /// LDAP でパスワードを変更する。 /// </summary> /// <param name="accountDN">アカウントの DN</param> /// <param name="oldPasswd">現在のパスワード</param> /// <param name="newPasswd">変更後のパスワード</param> /// <param name="ldapServer">LDAP サーバーのホスト名または IP アドレス</param> /// <param name="isTls">LDAPS にする場合 true。LDAP のままにする場合 false。</param> public static void ChangePassword(string accountDN, string oldPasswd, string newPasswd, string ldapServer, bool isTls) { if (accountDN == null || oldPasswd == null || newPasswd == null || ldapServer == null) { throw new ArgumentNullException(); } if (accountDN.Length < 1 || oldPasswd.Length < 1 || newPasswd.Length < 1 || ldapServer.Length < 1) { throw new ArgumentException(); } ldapServer = ServerPortSpecify(ldapServer, isTls); LdapConnection ldapConnection = new LdapConnection(ldapServer) { Credential = new NetworkCredential(accountDN, oldPasswd), AuthType = AuthType.Basic, Timeout = new TimeSpan(0, 0, 10) }; ldapConnection.SessionOptions.ProtocolVersion = 3; ldapConnection.SessionOptions.SecureSocketLayer = isTls; // https://tools.ietf.org/html/rfc3062 var ber = BerConverter.Encode("{tststs}", LDAP_TAG_EXOP_MODIFY_PASSWD_ID, accountDN, LDAP_TAG_EXOP_MODIFY_PASSWD_OLD, oldPasswd, LDAP_TAG_EXOP_MODIFY_PASSWD_NEW, newPasswd); var modifyPasswdRequest = new ExtendedRequest(LDAP_EXOP_MODIFY_PASSWD, ber); try { // 認証したいユーザーでバインドする ldapConnection.Bind(); // パスワード変更要求を送信 var modifyPasswdResponse = (ExtendedResponse)ldapConnection.SendRequest(modifyPasswdRequest); // 応答が「成功」か確認 if (modifyPasswdResponse.ResultCode != ResultCode.Success) { throw new Exception("Could not change password. (" + Enum.GetName(typeof(ResultCode), modifyPasswdResponse.ResultCode) + ")"); } } finally { if (ldapConnection != null) { try { ldapConnection.Dispose(); } catch (Exception e) { System.Diagnostics.Debug.WriteLine(e); } } } }