blob: a6864a4518f4ffeef2ff968e4b9c7376ad84dd71 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.auth;
/// A high level assessment of whether the human that owns a Fuchsia account is
/// present and engaged.
///
/// Note this enum is currently defined to enable multi-user experimentation.
/// Substantial work is required before any realistic use cases.
enum AuthStateSummary {
/// No information (either affirming or dissenting) is available about the
/// current presence or engagement of the account owner.
UNKNOWN = 0;
/// The account owner has been marked as present by some test or experimental
/// authentication mechanism. This state should not be used to grant access
/// to any sensitive user information.
TEST_PRESENT = 10000;
/// The account owner has been marked as not-present by some test or
/// experimental authentication mechanism.
TEST_ABSENT = 10001;
// TODO(jsankey): Add additional values to represent realistic
// authentication states.
};
/// An assessment of the current presence and engagement of the human that owns
/// a Fuchsia account, including the system's confidence in that assessment and
/// its timeliness.
///
/// Note this struct is currently defined to enable multi-user experimentation.
/// Substantial work is required before any realistic use cases.
struct AuthState {
/// A high level assessment of whether the human that owns a Fuchsia account
/// is present and engaged.
AuthStateSummary summary;
// TODO(jsankey): Add additional fields to express timeliness, confidence,
// and authentication mechanism.
};
/// An expression of the types of changes an auth state that should be reported
/// over listener interfaces. By default no changes will be reported.
struct AuthChangeGranularity {
/// If true, any changes in the `AuthStateSummary` enumeration will be
/// reported.
bool summary_changes;
// TODO(jsankey): Expand to include other types of change.
};
/// A unique identifier for an account with some service provider, comprised of
/// the identity of the service provider and an account identity supplied by that
/// service provider.
///
// TODO(jsankey): Integrate other parts of the AuthProvider API with this
// domain-based identity. In general multiple auth_provider_types may exist for
// the same identity_provider_domain.
struct ServiceProviderAccount {
/// The primary domain of the identity provider, such as "www.google.com".
string identity_provider_domain;
/// User identifier as supplied by the identity provider. Some identity
/// providers send verified email address as the identifier, some send an
/// opaque string.
string user_profile_id;
};