예제 #1
0
        public OpenIDLoginResponse(Binding <JObject> binding)
        {
            if (binding.BindingDirection != this.BindingDirection)
            {
                throw new ArgumentException("Binding has the wrong binding direction for this document");
            }

            var json = binding.GetDocument();

            if (json == null)
            {
                return;
            }

            this.AccessCode = json["code"]?.ToObject <string>();

            this.ID       = json[nameof(JwtOpenIDPayload.JsonTokenID)]?.ToObject <string>();
            this.Issuer   = json[nameof(JwtOpenIDPayload.Issuer)]?.ToObject <string>();
            this.Subject  = json[nameof(JwtOpenIDPayload.Subject)]?.ToObject <string>();
            this.Audience = json[nameof(JwtOpenIDPayload.Audience)]?.ToObject <string>();
            this.UserID   = json[nameof(JwtOpenIDPayload.AAD_ObjectID)]?.ToObject <string>();

            this.UserName = json[nameof(JwtOpenIDPayload.UniqueName)]?.ToObject <string>();
            if (this.UserName == null)
            {
                this.UserName = json[nameof(JwtOpenIDPayload.AAD_UserPrincipalName)]?.ToObject <string>();
            }

            this.Name = json[nameof(JwtOpenIDPayload.AAD_Name)]?.ToObject <string>();
            if (json[nameof(JwtOpenIDPayload.Roles)] != null)
            {
                if (json[nameof(JwtOpenIDPayload.Roles)].Type == JTokenType.Array)
                {
                    this.Roles = json[nameof(JwtOpenIDPayload.Roles)]?.ToObject <string[]>();
                }
                else
                {
                    this.Roles = json[nameof(JwtOpenIDPayload.Roles)]?.ToObject <string>().Split(new String[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(x => x.Trim()).ToArray();
                }
            }
            this.Emails = json[nameof(JwtOpenIDPayload.AAD_Emails)]?.ToObject <string[]>();

            this.Nonce        = json[nameof(JwtOpenIDPayload.Nonce)]?.ToObject <string>();
            this.IssuedAtTime = json[nameof(JwtOpenIDPayload.IssuedAtTime)]?.ToObject <long>();
            this.NotBefore    = json[nameof(JwtOpenIDPayload.NotBefore)]?.ToObject <long>();
            this.Expiration   = json[nameof(JwtOpenIDPayload.Expiration)]?.ToObject <long>();

            this.X509Thumbprint = json[nameof(JwtHeader.X509Thumbprint)]?.ToObject <string>();
            this.KeyID          = json[nameof(JwtHeader.KeyID)]?.ToObject <string>();

            this.State = json["state"]?.ToObject <string>();

            this.OtherClaims = OpenIDJwtBinding.GetOtherClaims(json);

            this.Error            = json["error"]?.ToObject <string>();
            this.ErrorDescription = json["error_description"]?.ToObject <string>();
        }
예제 #2
0
        public OpenIDLogoutResponse(Binding <JObject> binding)
        {
            if (binding.BindingDirection != this.BindingDirection)
            {
                throw new ArgumentException("Binding has the wrong binding direction for this document");
            }

            var json = binding.GetDocument();

            if (json == null)
            {
                return;
            }

            this.ServiceProvider = json[OpenIDBinding.ClientFormName]?.ToObject <string>();
            this.State           = json["state"]?.ToObject <string>();

            this.OtherClaims = OpenIDJwtBinding.GetOtherClaims(json);
        }