blob: e68ef98be3c8e9b254616b39bc06a6ae1d4d0e52 [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;
};