diff --git a/Esiur/Net/IIP/DistributedConnection.cs b/Esiur/Net/IIP/DistributedConnection.cs index 4bc4963..68cac4a 100644 --- a/Esiur/Net/IIP/DistributedConnection.cs +++ b/Esiur/Net/IIP/DistributedConnection.cs @@ -833,7 +833,7 @@ public partial class DistributedConnection : NetworkConnection, IStore } } - //Console.WriteLine(msg.GetString(offset, ends - offset)); + var rt = authPacket.Parse(msg, offset, ends); @@ -1032,6 +1032,7 @@ public partial class DistributedConnection : NetworkConnection, IStore //SendParams((byte)0, localHash); var localHash = hashFunc.ComputeHash((new BinaryList()).AddUInt8Array(localNonce).AddUInt8Array(remoteNonce).AddUInt8Array(pw).ToArray()); + SendParams().AddUInt8(0).AddUInt8Array(localHash).Done(); readyToEstablish = true; diff --git a/Esiur/Security/Authority/Session.cs b/Esiur/Security/Authority/Session.cs index 103d7f9..32eb05c 100644 --- a/Esiur/Security/Authority/Session.cs +++ b/Esiur/Security/Authority/Session.cs @@ -55,7 +55,6 @@ public class Session public Session(Authentication localAuthentication, Authentication remoteAuthentication) { - this.localAuth = localAuthentication; this.remoteAuth = remoteAuthentication; } diff --git a/Esiur/Security/Membership/AuthorizationResponse.cs b/Esiur/Security/Membership/AuthorizationResponse.cs new file mode 100644 index 0000000..3ebb221 --- /dev/null +++ b/Esiur/Security/Membership/AuthorizationResponse.cs @@ -0,0 +1,13 @@ +using Esiur.Security.Authority; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Esiur.Security.Membership +{ + public class AuthorizationResponse + { + public Session Session { get; set; } + public bool Succeeded { get; set; } + } +} diff --git a/Esiur/Security/Membership/AuthorizationResults.cs b/Esiur/Security/Membership/AuthorizationResults.cs new file mode 100644 index 0000000..1b7125b --- /dev/null +++ b/Esiur/Security/Membership/AuthorizationResults.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Esiur.Security.Membership +{ + public class AuthorizationResults + { + AuthorizationResultsResponse Response { get; set; } + TwoFactorAuthorizationMethod TwoFactorMethod { get; set; } + public string Clue { get; set; } + public string AppName { get; set; } + public string Code { get; set; } + public int Timeout { get; set; } + } +} diff --git a/Esiur/Security/Membership/AuthorizationResultsResponse.cs b/Esiur/Security/Membership/AuthorizationResultsResponse.cs new file mode 100644 index 0000000..730cdb5 --- /dev/null +++ b/Esiur/Security/Membership/AuthorizationResultsResponse.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Esiur.Security.Membership +{ + public enum AuthorizationResultsResponse + { + Success, + ServiceUnavailable, + TwoFactoryAuthorization, + } +} diff --git a/Esiur/Security/Membership/IMembership.cs b/Esiur/Security/Membership/IMembership.cs index 33d5597..eb994df 100644 --- a/Esiur/Security/Membership/IMembership.cs +++ b/Esiur/Security/Membership/IMembership.cs @@ -1,6 +1,6 @@ /* -Copyright (c) 2017 Ahmed Kh. Zamil +Copyright (c) 2017-2024 Ahmed Kh. Zamil Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -37,11 +37,17 @@ namespace Esiur.Security.Membership; public interface IMembership { + public event ResourceEventHandler Authorization; + AsyncReply UserExists(string username, string domain); AsyncReply GetPassword(string username, string domain); AsyncReply GetToken(ulong tokenIndex, string domain); + AsyncReply Authorize(Session session); AsyncReply Login(Session session); AsyncReply Logout(Session session); bool GuestsAllowed { get; } AsyncReply TokenExists(ulong tokenIndex, string domain); } + + + diff --git a/Esiur/Security/Membership/TwoFactorAuthorizationMethod.cs b/Esiur/Security/Membership/TwoFactorAuthorizationMethod.cs new file mode 100644 index 0000000..e110596 --- /dev/null +++ b/Esiur/Security/Membership/TwoFactorAuthorizationMethod.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Esiur.Security.Membership +{ + public enum TwoFactorAuthorizationMethod + { + Email, + SMS, + App, + } + + +}