//-----------------------------------------------------------------------
//
// Copyright (c) Outercurve Foundation. All rights reserved.
//
//-----------------------------------------------------------------------
namespace DotNetOpenAuth.OpenId.Provider {
using System;
using System.Collections.Generic;
using System.Text;
using DotNetOpenAuth.Messaging;
///
/// Instances of this interface represent incoming authentication requests.
/// This interface provides the details of the request and allows setting
/// the response.
///
public interface IAuthenticationRequest : IHostProcessedRequest {
///
/// Gets a value indicating whether the Provider should help the user
/// select a Claimed Identifier to send back to the relying party.
///
bool IsDirectedIdentity { get; }
///
/// Gets a value indicating whether the requesting Relying Party is using a delegated URL.
///
///
/// When delegated identifiers are used, the should not
/// be changed at the Provider during authentication.
/// Delegation is only detectable on requests originating from OpenID 2.0 relying parties.
/// A relying party implementing only OpenID 1.x may use delegation and this property will
/// return false anyway.
///
bool IsDelegatedIdentifier { get; }
///
/// Gets or sets the Local Identifier to this OpenID Provider of the user attempting
/// to authenticate. Check to see if
/// this value is valid.
///
///
/// This may or may not be the same as the Claimed Identifier that the user agent
/// originally supplied to the relying party. The Claimed Identifier
/// endpoint may be delegating authentication to this provider using
/// this provider's local id, which is what this property contains.
/// Use this identifier when looking up this user in the provider's user account
/// list.
///
Identifier LocalIdentifier { get; set; }
///
/// Gets or sets the identifier that the user agent is claiming at the relying party site.
/// Check to see if this value is valid.
///
///
/// This property can only be set if is
/// false, to prevent breaking URL delegation.
/// This will not be the same as this provider's local identifier for the user
/// if the user has set up his/her own identity page that points to this
/// provider for authentication.
/// The provider may use this identifier for displaying to the user when
/// asking for the user's permission to authenticate to the relying party.
///
/// Thrown from the setter
/// if is true.
Identifier ClaimedIdentifier { get; set; }
///
/// Gets or sets a value indicating whether the provider has determined that the
/// belongs to the currently logged in user
/// and wishes to share this information with the consumer.
///
bool? IsAuthenticated { get; set; }
///
/// Adds an optional fragment (#fragment) portion to the ClaimedIdentifier.
/// Useful for identifier recycling.
///
///
/// Should not include the # prefix character as that will be added internally.
/// May be null or the empty string to clear a previously set fragment.
///
///
/// Unlike the property, which can only be set if
/// using directed identity, this method can be called on any URI claimed identifier.
/// Because XRI claimed identifiers (the canonical IDs) are never recycled,
/// this method shouldnot be called for XRIs.
///
///
/// Thrown when this method is called on an XRI, or on a directed identity
/// request before the property is set.
///
void SetClaimedIdentifierFragment(string fragment);
}
}