mirror of
https://github.com/esiur/esiur-dotnet.git
synced 2025-06-27 05:23:13 +00:00
iAuth
This commit is contained in:
50
Esiur/Security/Membership/AuthorizationRequest.cs
Normal file
50
Esiur/Security/Membership/AuthorizationRequest.cs
Normal file
@ -0,0 +1,50 @@
|
||||
using Esiur.Data;
|
||||
using Esiur.Net.Packets;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Esiur.Security.Membership
|
||||
{
|
||||
public class AuthorizationRequest
|
||||
{
|
||||
public uint Reference { get; set; }
|
||||
public IIPAuthPacketIAuthDestination Destination { get; set; }
|
||||
public string Clue { get; set; }
|
||||
public IIPAuthPacketIAuthFormat? RequiredFormat { get; set; }
|
||||
public IIPAuthPacketIAuthFormat? ContentFormat { get; set; }
|
||||
public object? Content { get; set; }
|
||||
|
||||
public byte? Trials { get; set; }
|
||||
|
||||
public DateTime? Issue { get; set; }
|
||||
public DateTime? Expire { get; set; }
|
||||
|
||||
public int Timeout => Expire.HasValue && Issue.HasValue ? (int)(Expire.Value - Issue.Value).TotalSeconds : 0;
|
||||
|
||||
public AuthorizationRequest(Map<IIPAuthPacketIAuthHeader, object> headers)
|
||||
{
|
||||
Reference = (uint)headers[IIPAuthPacketIAuthHeader.Reference];
|
||||
Destination = (IIPAuthPacketIAuthDestination)headers[IIPAuthPacketIAuthHeader.Destination];
|
||||
Clue = (string)headers[IIPAuthPacketIAuthHeader.Clue];
|
||||
|
||||
if (headers.ContainsKey(IIPAuthPacketIAuthHeader.RequiredFormat))
|
||||
RequiredFormat = (IIPAuthPacketIAuthFormat)headers[IIPAuthPacketIAuthHeader.RequiredFormat];
|
||||
|
||||
if (headers.ContainsKey(IIPAuthPacketIAuthHeader.ContentFormat))
|
||||
ContentFormat = (IIPAuthPacketIAuthFormat)headers[IIPAuthPacketIAuthHeader.ContentFormat];
|
||||
|
||||
if (headers.ContainsKey(IIPAuthPacketIAuthHeader.Content))
|
||||
Content = headers[IIPAuthPacketIAuthHeader.Content];
|
||||
|
||||
if (headers.ContainsKey(IIPAuthPacketIAuthHeader.Trials))
|
||||
Trials = (byte)headers[IIPAuthPacketIAuthHeader.Trials];
|
||||
|
||||
if (headers.ContainsKey(IIPAuthPacketIAuthHeader.Issue))
|
||||
Issue = (DateTime)headers[IIPAuthPacketIAuthHeader.Issue];
|
||||
|
||||
if (headers.ContainsKey(IIPAuthPacketIAuthHeader.Expire))
|
||||
Expire = (DateTime)headers[IIPAuthPacketIAuthHeader.Expire];
|
||||
}
|
||||
}
|
||||
}
|
@ -8,15 +8,22 @@ namespace Esiur.Security.Membership
|
||||
public class AuthorizationResults
|
||||
{
|
||||
public AuthorizationResultsResponse Response { get; set; }
|
||||
public IIPAuthPacketIAuthDestination Destination { get; set; }
|
||||
public IIPAuthPacketIAuthFormat RequiredFormat { get; set; }
|
||||
public string Clue { get; set; }
|
||||
|
||||
public ushort Timeout { get; set; } // 0 means no timeout
|
||||
|
||||
public uint Reference { get; set; }
|
||||
public IIPAuthPacketIAuthDestination Destination { get; set; }
|
||||
public string Clue { get; set; }
|
||||
public IIPAuthPacketIAuthFormat? RequiredFormat { get; set; }
|
||||
public IIPAuthPacketIAuthFormat? ContentFormat { get; set; }
|
||||
public object? Content { get; set; }
|
||||
|
||||
public DateTime Issue { get; set; } = DateTime.UtcNow;
|
||||
public byte? Trials { get; set; }
|
||||
|
||||
public bool Expired => Timeout == 0 ? false : (DateTime.UtcNow - Issue).TotalSeconds > Timeout;
|
||||
public DateTime? Issue { get; set; } = DateTime.UtcNow;
|
||||
public DateTime? Expire { get; set; }
|
||||
|
||||
public int Timeout => Expire.HasValue && Issue.HasValue ? (int)(Expire.Value - Issue.Value).TotalSeconds : 0;
|
||||
|
||||
public bool Expired => DateTime.Now > Expire;
|
||||
}
|
||||
}
|
||||
|
@ -82,7 +82,7 @@ namespace Esiur.Security.Membership
|
||||
Destination = IIPAuthPacketIAuthDestination.Self,
|
||||
Reference = (uint)r.Next(),
|
||||
RequiredFormat = format,
|
||||
Timeout = 30,
|
||||
Expire = DateTime.Now.AddSeconds(60),
|
||||
Response = q.Hashed ? AuthorizationResultsResponse.IAuthHashed : AuthorizationResultsResponse.IAuthPlain
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user