Exemplo n.º 1
0
        protected AccessTokenResponse TokenEndpoint(AccessTokenRequest req)
        {
            AccessTokenEntry AccessTokenEntry;
            string           IdPSessionSecret;

            if (req == null)
            {
                return(null);
            }
            AccessTokenResponse resp = new AccessTokenResponse();

            CST_Ops.recordme(this, req, resp);
            switch (req.grant_type)
            {
            case "authorization_code":
                IdPSessionSecret = AuthorizationCodeRecs.findISSByClientIDAndCode(req.client_id /*, req.UserID*/, req.code);
                if (IdPSessionSecret == null)
                {
                    return(null);
                }
                AuthorizationCodeEntry AuthCodeEntry = (AuthorizationCodeEntry)AuthorizationCodeRecs.getEntry(IdPSessionSecret, req.client_id);
                if (AuthCodeEntry.redirect_uri != req.redirect_uri)
                {
                    return(null);
                }
                AccessTokenEntry = createAccessTokenEntry(AuthCodeEntry.redirect_uri, AuthCodeEntry.scope, AuthCodeEntry.state);
                if (AccessTokenRecs.setEntry(AccessTokenEntry.access_token, req.client_id, req.UserID, AccessTokenEntry) == false)
                {
                    return(null);
                }

                resp.access_token  = AccessTokenEntry.access_token;
                resp.refresh_token = AccessTokenEntry.refresh_token;
                resp.scope         = AccessTokenEntry.scope;
                return(resp);

            case "refresh_token":
                IdPSessionSecret = AccessTokenRecs.findISSByClientIDAndRefreshToken(req.client_id, req.UserID, req.code);
                if (IdPSessionSecret == null)
                {
                    return(null);
                }
                AccessTokenEntry = (AccessTokenEntry)AccessTokenRecs.getEntry(req.access_token, req.client_id, req.UserID);
                AccessTokenEntry newAccessTokenEntry = createAccessTokenEntry(AccessTokenEntry.redirect_uri, AccessTokenEntry.scope, AccessTokenEntry.state);
                if (AccessTokenRecs.setEntry(newAccessTokenEntry.access_token, req.client_id, req.UserID, newAccessTokenEntry) == false)
                {
                    return(null);
                }
                resp.access_token  = AccessTokenEntry.access_token;
                resp.refresh_token = AccessTokenEntry.refresh_token;
                resp.scope         = AccessTokenEntry.scope;
                return(resp);

            default:
                return(null);
            }
        }
Exemplo n.º 2
0
            public Permission_Claim getEntry(Ticket ticket, string Realm, string UserID)
            {
                AccessToken at = (AccessToken)ticket;

                AccessTokenEntry tokenEntry = dict[at][Realm][UserID];

                Contract.Assume(tokenEntry.GetType() == typeof(AccessTokenEntry));
                return(tokenEntry);
            }
Exemplo n.º 3
0
        public override AccessTokenEntry createAccessTokenEntry(string redirect_uri, Permissions scope, string state)
        {
            AccessTokenEntry entry = new AccessTokenEntry();
            entry.redirect_uri = redirect_uri;
            entry.scope = scope;
            entry.state = state;

            return entry;
        }
Exemplo n.º 4
0
        public override AccessTokenEntry createAccessTokenEntry(string redirect_uri, Permissions scope, string state)
        {
            AccessTokenEntry entry = new AccessTokenEntry();

            entry.redirect_uri = redirect_uri;
            entry.scope        = scope;
            entry.state        = state;

            return(entry);
        }
Exemplo n.º 5
0
            public bool setEntry(Ticket ticket, string Realm, string UserID, Permission_Claim claim)
            {
                AccessToken      at  = (AccessToken)ticket;
                AccessTokenEntry ate = (AccessTokenEntry)claim;

                if (at == null && claim == null)
                {
                    return(false);
                }

                dict[at]                = new Dictionary <string, Dictionary <string, AccessTokenEntry> >();
                dict[at][Realm]         = new Dictionary <string, AccessTokenEntry>();
                dict[at][Realm][UserID] = ate;

                return(true);
            }
Exemplo n.º 6
0
        public override AuthTicket_Resp ValidateTicket(AuthTicket_Req vtr)
        {
            Contract.Assume(vtr == GlobalObjects_base.AuthTicket_Req);

            ValidateTokenRequest req = (ValidateTokenRequest)vtr;

            AccessTokenEntry tokenEntry = (AccessTokenEntry)AccessTokenRecs.getEntry(req.access_token, req.client_id, req.UserID);

            if (req.client_id != tokenEntry.Realm || req.UserID != tokenEntry.UserID || tokenEntry.permissions.permissionSet.IsSupersetOf(req.scope.permissionSet) == false)
            {
                return(null);
            }

            ValidateTokenResponse resp = (ValidateTokenResponse)Process_ValidateTicket(req, tokenEntry);

            CST_Ops.recordme(this, req, resp, false, false);

            return(resp);
        }
Exemplo n.º 7
0
        public virtual ValidateTokenResponse Process_ValidateTicket(ValidateTokenRequest req, AccessTokenEntry tokenEntry)
        {
            ValidateTokenResponse resp = new ValidateTokenResponse();

            resp.access_token  = req.access_token;
            resp.client_id     = tokenEntry.Realm;
            resp.claimed_scope = tokenEntry.permissions;
            resp.scope         = req.scope;
            resp.UserID        = tokenEntry.UserID;
            resp.Realm         = tokenEntry.Realm;

            return(resp);
        }
Exemplo n.º 8
0
        public virtual ValidateTokenResponse Process_ValidateTicket(ValidateTokenRequest req, AccessTokenEntry tokenEntry)
        {
            ValidateTokenResponse resp = new ValidateTokenResponse();

            resp.access_token = req.access_token;
            resp.client_id = tokenEntry.Realm;
            resp.claimed_scope = tokenEntry.permissions;
            resp.scope = req.scope;
            resp.UserID = tokenEntry.UserID;
            resp.Realm = tokenEntry.Realm;  

            return resp;
        }