Exemple #1
0
 /// <summary>
 /// Generates OpenID Providers that can authenticate using directed identity.
 /// </summary>
 /// <param name="xrds">The XrdsDocument instance to use in this process.</param>
 /// <param name="opIdentifier">The OP Identifier entered (and resolved) by the user.</param>
 /// <returns>A sequence of the providers that can offer directed identity services.</returns>
 private static IEnumerable <ServiceEndpoint> GenerateOPIdentifierServiceEndpoints(this XrdsDocument xrds, Identifier opIdentifier)
 {
     return(from service in xrds.FindOPIdentifierServices()
            from uri in service.UriElements
            let protocol = Protocol.FindBestVersion(p => p.OPIdentifierServiceTypeURI, service.TypeElementUris)
                           let providerDescription = new ProviderEndpointDescription(uri.Uri, service.TypeElementUris)
                                                     select ServiceEndpoint.CreateForProviderIdentifier(opIdentifier, providerDescription, service.Priority, uri.Priority));
 }
Exemple #2
0
 /// <summary>
 /// Generates OpenID Providers that can authenticate using directed identity.
 /// </summary>
 /// <param name="xrds">The XrdsDocument instance to use in this process.</param>
 /// <param name="opIdentifier">The OP Identifier entered (and resolved) by the user.  Essentially the user-supplied identifier.</param>
 /// <returns>A sequence of the providers that can offer directed identity services.</returns>
 private static IEnumerable <IdentifierDiscoveryResult> GenerateOPIdentifierServiceEndpoints(this IEnumerable <XrdElement> xrds, Identifier opIdentifier)
 {
     Requires.NotNull(xrds, "xrds");
     Requires.NotNull(opIdentifier, "opIdentifier");
     return(from service in xrds.FindOPIdentifierServices()
            from uri in service.UriElements
            let protocol = Protocol.FindBestVersion(p => p.OPIdentifierServiceTypeURI, service.TypeElementUris)
                           let providerDescription = new ProviderEndpointDescription(uri.Uri, service.TypeElementUris)
                                                     select IdentifierDiscoveryResult.CreateForProviderIdentifier(opIdentifier, providerDescription, service.Priority, uri.Priority));
 }
 /// <summary>
 /// Generates OpenID Providers that can authenticate using directed identity.
 /// </summary>
 /// <param name="xrds">The XrdsDocument instance to use in this process.</param>
 /// <param name="opIdentifier">The OP Identifier entered (and resolved) by the user.  Essentially the user-supplied identifier.</param>
 /// <returns>A sequence of the providers that can offer directed identity services.</returns>
 private static IEnumerable <IdentifierDiscoveryResult> GenerateOPIdentifierServiceEndpoints(this IEnumerable <XrdElement> xrds, Identifier opIdentifier)
 {
     Contract.Requires <ArgumentNullException>(xrds != null);
     Contract.Requires <ArgumentNullException>(opIdentifier != null);
     Contract.Ensures(Contract.Result <IEnumerable <IdentifierDiscoveryResult> >() != null);
     return(from service in xrds.FindOPIdentifierServices()
            from uri in service.UriElements
            let protocol = Protocol.FindBestVersion(p => p.OPIdentifierServiceTypeURI, service.TypeElementUris)
                           let providerDescription = new ProviderEndpointDescription(uri.Uri, service.TypeElementUris)
                                                     select IdentifierDiscoveryResult.CreateForProviderIdentifier(opIdentifier, providerDescription, service.Priority, uri.Priority));
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="ProviderEndpointDescription"/> class.
        /// </summary>
        /// <param name="providerEndpoint">The URI the provider listens on for OpenID requests.</param>
        /// <param name="serviceTypeURIs">The set of services offered by this endpoint.</param>
        internal ProviderEndpointDescription(Uri providerEndpoint, IEnumerable <string> serviceTypeURIs)
        {
            ErrorUtilities.VerifyArgumentNotNull(providerEndpoint, "providerEndpoint");
            ErrorUtilities.VerifyArgumentNotNull(serviceTypeURIs, "serviceTypeURIs");

            this.Endpoint     = providerEndpoint;
            this.Capabilities = new ReadOnlyCollection <string>(serviceTypeURIs.ToList());

            Protocol opIdentifierProtocol             = Protocol.FindBestVersion(p => p.OPIdentifierServiceTypeURI, serviceTypeURIs);
            Protocol claimedIdentifierProviderVersion = Protocol.FindBestVersion(p => p.ClaimedIdentifierServiceTypeURI, serviceTypeURIs);

            if (opIdentifierProtocol != null)
            {
                this.ProtocolVersion = opIdentifierProtocol.Version;
            }
            else if (claimedIdentifierProviderVersion != null)
            {
                this.ProtocolVersion = claimedIdentifierProviderVersion.Version;
            }

            ErrorUtilities.VerifyProtocol(this.ProtocolVersion != null, OpenIdStrings.ProviderVersionUnrecognized, this.Endpoint);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ProviderEndpointDescription"/> class.
        /// </summary>
        /// <param name="providerEndpoint">The URI the provider listens on for OpenID requests.</param>
        /// <param name="serviceTypeURIs">The set of services offered by this endpoint.</param>
        internal ProviderEndpointDescription(Uri providerEndpoint, IEnumerable <string> serviceTypeURIs)
        {
            Contract.Requires <ArgumentNullException>(providerEndpoint != null);
            Contract.Requires <ArgumentNullException>(serviceTypeURIs != null);

            this.Uri          = providerEndpoint;
            this.Capabilities = new ReadOnlyCollection <string>(serviceTypeURIs.ToList());

            Protocol opIdentifierProtocol             = Protocol.FindBestVersion(p => p.OPIdentifierServiceTypeURI, serviceTypeURIs);
            Protocol claimedIdentifierProviderVersion = Protocol.FindBestVersion(p => p.ClaimedIdentifierServiceTypeURI, serviceTypeURIs);

            if (opIdentifierProtocol != null)
            {
                this.Version = opIdentifierProtocol.Version;
            }
            else if (claimedIdentifierProviderVersion != null)
            {
                this.Version = claimedIdentifierProviderVersion.Version;
            }
            else
            {
                ErrorUtilities.ThrowProtocol(OpenIdStrings.ProviderVersionUnrecognized, this.Uri);
            }
        }