diff options
| author | n1c00o <git.n1c00o@gmail.com> | 2022-10-12 18:05:45 +0200 | 
|---|---|---|
| committer | n1c00o <git.n1c00o@gmail.com> | 2022-10-12 18:05:45 +0200 | 
| commit | 9bcf3fedd50bd6c8dfef1673482d9b61fab49cd0 (patch) | |
| tree | 45f3b754ece09b90bde859bc6e7eae4d3c31a848 /third_party/googleapis/google/api/auth.proto | |
| parent | 2e1a2ee3d6c12d8367cbbe005fe7dcf8d253d9ac (diff) | |
Revendor correctly googleapis
Diffstat (limited to 'third_party/googleapis/google/api/auth.proto')
| -rw-r--r-- | third_party/googleapis/google/api/auth.proto | 232 | 
1 files changed, 232 insertions, 0 deletions
diff --git a/third_party/googleapis/google/api/auth.proto b/third_party/googleapis/google/api/auth.proto new file mode 100644 index 0000000..54026e1 --- /dev/null +++ b/third_party/googleapis/google/api/auth.proto @@ -0,0 +1,232 @@ +// Copyright 2015 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +//     http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; +option java_multiple_files = true; +option java_outer_classname = "AuthProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +// `Authentication` defines the authentication configuration for API methods +// provided by an API service. +// +// Example: +// +//     name: calendar.googleapis.com +//     authentication: +//       providers: +//       - id: google_calendar_auth +//         jwks_uri: https://www.googleapis.com/oauth2/v1/certs +//         issuer: https://securetoken.google.com +//       rules: +//       - selector: "*" +//         requirements: +//           provider_id: google_calendar_auth +//       - selector: google.calendar.Delegate +//         oauth: +//           canonical_scopes: https://www.googleapis.com/auth/calendar.read +message Authentication { +  // A list of authentication rules that apply to individual API methods. +  // +  // **NOTE:** All service configuration rules follow "last one wins" order. +  repeated AuthenticationRule rules = 3; + +  // Defines a set of authentication providers that a service supports. +  repeated AuthProvider providers = 4; +} + +// Authentication rules for the service. +// +// By default, if a method has any authentication requirements, every request +// must include a valid credential matching one of the requirements. +// It's an error to include more than one kind of credential in a single +// request. +// +// If a method doesn't have any auth requirements, request credentials will be +// ignored. +message AuthenticationRule { +  // Selects the methods to which this rule applies. +  // +  // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. +  string selector = 1; + +  // The requirements for OAuth credentials. +  OAuthRequirements oauth = 2; + +  // If true, the service accepts API keys without any other credential. +  // This flag only applies to HTTP and gRPC requests. +  bool allow_without_credential = 5; + +  // Requirements for additional authentication providers. +  repeated AuthRequirement requirements = 7; +} + +// Specifies a location to extract JWT from an API request. +message JwtLocation { +  oneof in { +    // Specifies HTTP header name to extract JWT token. +    string header = 1; + +    // Specifies URL query parameter name to extract JWT token. +    string query = 2; +  } + +  // The value prefix. The value format is "value_prefix{token}" +  // Only applies to "in" header type. Must be empty for "in" query type. +  // If not empty, the header value has to match (case sensitive) this prefix. +  // If not matched, JWT will not be extracted. If matched, JWT will be +  // extracted after the prefix is removed. +  // +  // For example, for "Authorization: Bearer {JWT}", +  // value_prefix="Bearer " with a space at the end. +  string value_prefix = 3; +} + +// Configuration for an authentication provider, including support for +// [JSON Web Token +// (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32). +message AuthProvider { +  // The unique identifier of the auth provider. It will be referred to by +  // `AuthRequirement.provider_id`. +  // +  // Example: "bookstore_auth". +  string id = 1; + +  // Identifies the principal that issued the JWT. See +  // https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1 +  // Usually a URL or an email address. +  // +  // Example: https://securetoken.google.com +  // Example: 1234567-compute@developer.gserviceaccount.com +  string issuer = 2; + +  // URL of the provider's public key set to validate signature of the JWT. See +  // [OpenID +  // Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata). +  // Optional if the key set document: +  //  - can be retrieved from +  //    [OpenID +  //    Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html) +  //    of the issuer. +  //  - can be inferred from the email domain of the issuer (e.g. a Google +  //  service account). +  // +  // Example: https://www.googleapis.com/oauth2/v1/certs +  string jwks_uri = 3; + +  // The list of JWT +  // [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3). +  // that are allowed to access. A JWT containing any of these audiences will +  // be accepted. When this setting is absent, JWTs with audiences: +  //   - "https://[service.name]/[google.protobuf.Api.name]" +  //   - "https://[service.name]/" +  // will be accepted. +  // For example, if no audiences are in the setting, LibraryService API will +  // accept JWTs with the following audiences: +  //   - +  //   https://library-example.googleapis.com/google.example.library.v1.LibraryService +  //   - https://library-example.googleapis.com/ +  // +  // Example: +  // +  //     audiences: bookstore_android.apps.googleusercontent.com, +  //                bookstore_web.apps.googleusercontent.com +  string audiences = 4; + +  // Redirect URL if JWT token is required but not present or is expired. +  // Implement authorizationUrl of securityDefinitions in OpenAPI spec. +  string authorization_url = 5; + +  // Defines the locations to extract the JWT. +  // +  // JWT locations can be either from HTTP headers or URL query parameters. +  // The rule is that the first match wins. The checking order is: checking +  // all headers first, then URL query parameters. +  // +  // If not specified,  default to use following 3 locations: +  //    1) Authorization: Bearer +  //    2) x-goog-iap-jwt-assertion +  //    3) access_token query parameter +  // +  // Default locations can be specified as followings: +  //    jwt_locations: +  //    - header: Authorization +  //      value_prefix: "Bearer " +  //    - header: x-goog-iap-jwt-assertion +  //    - query: access_token +  repeated JwtLocation jwt_locations = 6; +} + +// OAuth scopes are a way to define data and permissions on data. For example, +// there are scopes defined for "Read-only access to Google Calendar" and +// "Access to Cloud Platform". Users can consent to a scope for an application, +// giving it permission to access that data on their behalf. +// +// OAuth scope specifications should be fairly coarse grained; a user will need +// to see and understand the text description of what your scope means. +// +// In most cases: use one or at most two OAuth scopes for an entire family of +// products. If your product has multiple APIs, you should probably be sharing +// the OAuth scope across all of those APIs. +// +// When you need finer grained OAuth consent screens: talk with your product +// management about how developers will use them in practice. +// +// Please note that even though each of the canonical scopes is enough for a +// request to be accepted and passed to the backend, a request can still fail +// due to the backend requiring additional scopes or permissions. +message OAuthRequirements { +  // The list of publicly documented OAuth scopes that are allowed access. An +  // OAuth token containing any of these scopes will be accepted. +  // +  // Example: +  // +  //      canonical_scopes: https://www.googleapis.com/auth/calendar, +  //                        https://www.googleapis.com/auth/calendar.read +  string canonical_scopes = 1; +} + +// User-defined authentication requirements, including support for +// [JSON Web Token +// (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32). +message AuthRequirement { +  // [id][google.api.AuthProvider.id] from authentication provider. +  // +  // Example: +  // +  //     provider_id: bookstore_auth +  string provider_id = 1; + +  // NOTE: This will be deprecated soon, once AuthProvider.audiences is +  // implemented and accepted in all the runtime components. +  // +  // The list of JWT +  // [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3). +  // that are allowed to access. A JWT containing any of these audiences will +  // be accepted. When this setting is absent, only JWTs with audience +  // "https://[Service_name][google.api.Service.name]/[API_name][google.protobuf.Api.name]" +  // will be accepted. For example, if no audiences are in the setting, +  // LibraryService API will only accept JWTs with the following audience +  // "https://library-example.googleapis.com/google.example.library.v1.LibraryService". +  // +  // Example: +  // +  //     audiences: bookstore_android.apps.googleusercontent.com, +  //                bookstore_web.apps.googleusercontent.com +  string audiences = 2; +}  | 
