| // 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; |
| }; |