Esempio n. 1
0
        /// <summary>
        /// Verify if a delegation exists.
        /// </summary>
        /// <param name="clientId">The client id.</param>
        /// <param name="delegatedIdentity">The delegated identity.</param>
        /// <param name="scope">The scope.</param>
        /// <returns>True if a delegation exists, false otherwise.</returns>
        public bool DelegationExists(string clientId, AuthorizationServerIdentity delegatedIdentity, string scope)
        {
            var client = CreateManagementServiceClient();

            var relyingParty   = client.RelyingParties.Where(rp => rp.Name == RelyingPartyName).ToList().FirstOrDefault();
            var relyingPartyId = relyingParty.Id;

            var serviceIdentity = client.ServiceIdentities.Where(si => si.Name == clientId).ToList().FirstOrDefault();

            if (serviceIdentity == null)
            {
                throw new OAuthMessageException(Resources.ID3751);
            }

            var nameIdentifier   = delegatedIdentity.NameIdentifier;
            var identityProvider = delegatedIdentity.IdentityProvider;

            var serviceIdentityId = serviceIdentity.Id;
            var delegation        = client.Delegations.Where(d => d.ServiceIdentityId == serviceIdentityId && d.RelyingPartyId == relyingPartyId && d.IdentityProvider == identityProvider && d.NameIdentifier == nameIdentifier).ToList().FirstOrDefault();

            return(delegation != null);
        }
Esempio n. 2
0
        /// <summary>
        /// Gets the authorization code.
        /// </summary>
        /// <param name="clientId">The client id.</param>
        /// <param name="delegatedIdentity">The delegated identity.</param>
        /// <param name="scope">The scope.</param>
        /// <returns>
        /// The authorization code.
        /// </returns>
        public string GetAuthorizationCode(string clientId, AuthorizationServerIdentity delegatedIdentity, string scope)
        {
            var client = CreateManagementServiceClient();

            var relyingParty   = client.RelyingParties.Where(rp => rp.Name == RelyingPartyName).ToList().FirstOrDefault();
            var relyingPartyId = relyingParty.Id;

            var serviceIdentity = client.ServiceIdentities.Where(si => si.Name == clientId).ToList().FirstOrDefault();

            if (serviceIdentity == null)
            {
                throw new OAuthMessageException(Resources.ID3751);
            }

            var nameIdentifier   = delegatedIdentity.NameIdentifier;
            var identityProvider = delegatedIdentity.IdentityProvider;

            var serviceIdentityId = serviceIdentity.Id;
            var delegation        = client.Delegations.Where(d => d.ServiceIdentityId == serviceIdentityId && d.RelyingPartyId == relyingPartyId && d.IdentityProvider == identityProvider && d.NameIdentifier == nameIdentifier).ToList().FirstOrDefault();

            if (delegation == null)
            {
                delegation = new Delegation()
                {
                    NameIdentifier    = delegatedIdentity.NameIdentifier,
                    IdentityProvider  = delegatedIdentity.IdentityProvider,
                    RelyingPartyId    = relyingPartyId,
                    ServiceIdentityId = serviceIdentity.Id,
                    Permissions       = scope
                };

                client.AddToDelegations(delegation);
                client.SaveChanges();
            }

            return(delegation.AuthorizationCode);
        }