| OLD | NEW |
| 1 // Copyright 2014 The LUCI Authors. All rights reserved. | 1 // Copyright 2014 The LUCI Authors. All rights reserved. |
| 2 // Use of this source code is governed under the Apache License, Version 2.0 | 2 // Use of this source code is governed under the Apache License, Version 2.0 |
| 3 // that can be found in the LICENSE file. | 3 // that can be found in the LICENSE file. |
| 4 | 4 |
| 5 // Messages for Primary <-> Replica auth DB replication protocol. | 5 // Messages for Primary <-> Replica auth DB replication protocol. |
| 6 // Used from both Primary side (i.e. auth_service) and Replica side (any service | 6 // Used from both Primary side (i.e. auth_service) and Replica side (any service |
| 7 // that uses auth component). | 7 // that uses auth component). |
| 8 | 8 |
| 9 syntax = "proto2"; |
| 10 |
| 9 package components.auth.proto.replication; | 11 package components.auth.proto.replication; |
| 10 | 12 |
| 11 | 13 |
| 12 //////////////////////////////////////////////////////////////////////////////// | 14 //////////////////////////////////////////////////////////////////////////////// |
| 13 // Linking protocol, used to associate Replicas with Primary. | 15 // Linking protocol, used to associate Replicas with Primary. |
| 14 // | 16 // |
| 15 // Overall protocol flow: | 17 // Overall protocol flow: |
| 16 // 1. Primary generates and serializes ServiceLinkTicket message (via | 18 // 1. Primary generates and serializes ServiceLinkTicket message (via |
| 17 // /auth_service/api/v1/services/<app id>/linking_url call). | 19 // /auth_service/api/v1/services/<app id>/linking_url call). |
| 18 // 2. ServiceLinkTicket is passed to Replica as GET parameter in /auth/link | 20 // 2. ServiceLinkTicket is passed to Replica as GET parameter in /auth/link |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 // When the group was modified last time. Microseconds since epoch. | 102 // When the group was modified last time. Microseconds since epoch. |
| 101 required int64 modified_ts = 8; | 103 required int64 modified_ts = 8; |
| 102 // Who modified the group last time. | 104 // Who modified the group last time. |
| 103 required string modified_by = 9; | 105 required string modified_by = 9; |
| 104 | 106 |
| 105 // A name of the group that can modify or delete this group. | 107 // A name of the group that can modify or delete this group. |
| 106 optional string owners = 10; | 108 optional string owners = 10; |
| 107 } | 109 } |
| 108 | 110 |
| 109 | 111 |
| 110 // Some secret blob. Corresponds to AuthSecret entity in model.py. | |
| 111 message AuthSecret { | |
| 112 // Name of the secret. | |
| 113 required string name = 1; | |
| 114 // Last several values of a secret, with current value in front. | |
| 115 repeated bytes values = 2; | |
| 116 // When secret was modified last time. Microseconds since epoch. | |
| 117 required int64 modified_ts = 3; | |
| 118 // Who modified the secret last time. | |
| 119 required string modified_by = 4; | |
| 120 } | |
| 121 | |
| 122 | |
| 123 // A named set of whitelisted IP addresses. Corresponds to AuthIPWhitelist | 112 // A named set of whitelisted IP addresses. Corresponds to AuthIPWhitelist |
| 124 // entity in model.py. | 113 // entity in model.py. |
| 125 message AuthIPWhitelist { | 114 message AuthIPWhitelist { |
| 126 // Name of the IP whitelist. | 115 // Name of the IP whitelist. |
| 127 required string name = 1; | 116 required string name = 1; |
| 128 | 117 |
| 129 // The list of IP subnets. | 118 // The list of IP subnets. |
| 130 repeated string subnets = 2; | 119 repeated string subnets = 2; |
| 131 | 120 |
| 132 // Human readable description. | 121 // Human readable description. |
| (...skipping 21 matching lines...) Expand all Loading... |
| 154 // Why the assignment was created. | 143 // Why the assignment was created. |
| 155 required string comment = 3; | 144 required string comment = 3; |
| 156 // When the assignment was created. Microseconds since epoch. | 145 // When the assignment was created. Microseconds since epoch. |
| 157 required int64 created_ts = 4; | 146 required int64 created_ts = 4; |
| 158 // Who created the assignment. | 147 // Who created the assignment. |
| 159 required string created_by = 5; | 148 required string created_by = 5; |
| 160 } | 149 } |
| 161 | 150 |
| 162 | 151 |
| 163 // An entire database of auth configuration that is being replicated. | 152 // An entire database of auth configuration that is being replicated. |
| 164 // Corresponds to AuthGlobalConfig entity in model.py, plus a list of all groups | |
| 165 // and a list of global secrets. | |
| 166 message AuthDB { | 153 message AuthDB { |
| 154 reserved 5; // used to be 'secrets', no longer used |
| 155 |
| 167 // OAuth2 client_id to use to mint new OAuth2 tokens. | 156 // OAuth2 client_id to use to mint new OAuth2 tokens. |
| 168 required string oauth_client_id = 1; | 157 required string oauth_client_id = 1; |
| 169 // OAuth2 client secret. Not so secret really, since it's passed to clients. | 158 // OAuth2 client secret. Not so secret really, since it's passed to clients. |
| 170 required string oauth_client_secret = 2; | 159 required string oauth_client_secret = 2; |
| 171 // Additional OAuth2 client_ids allowed to access the services. | 160 // Additional OAuth2 client_ids allowed to access the services. |
| 172 repeated string oauth_additional_client_ids = 3; | 161 repeated string oauth_additional_client_ids = 3; |
| 173 // All groups. | 162 // All groups. |
| 174 repeated AuthGroup groups = 4; | 163 repeated AuthGroup groups = 4; |
| 175 // Global secrets shared between services. | |
| 176 repeated AuthSecret secrets = 5; | |
| 177 // All IP whitelists. | 164 // All IP whitelists. |
| 178 repeated AuthIPWhitelist ip_whitelists = 6; | 165 repeated AuthIPWhitelist ip_whitelists = 6; |
| 179 // Mapping 'account -> IP whitlist to use for that account'. | 166 // Mapping 'account -> IP whitlist to use for that account'. |
| 180 repeated AuthIPWhitelistAssignment ip_whitelist_assignments = 7; | 167 repeated AuthIPWhitelistAssignment ip_whitelist_assignments = 7; |
| 181 // URL of a token server to use to generate delegation tokens. | 168 // URL of a token server to use to generate delegation tokens. |
| 182 optional string token_server_url = 8; | 169 optional string token_server_url = 8; |
| 183 } | 170 } |
| 184 | 171 |
| 185 | 172 |
| 186 // Information about some particular revision of auth DB. | 173 // Information about some particular revision of auth DB. |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 250 | 237 |
| 251 // Overall status of the operation. | 238 // Overall status of the operation. |
| 252 required Status status = 1; | 239 required Status status = 1; |
| 253 // Revision known by Replica (set for APPLIED and SKIPPED statuses). | 240 // Revision known by Replica (set for APPLIED and SKIPPED statuses). |
| 254 optional AuthDBRevision current_revision = 2; | 241 optional AuthDBRevision current_revision = 2; |
| 255 // Present for TRANSIENT_ERROR and FATAL_ERROR statuses. | 242 // Present for TRANSIENT_ERROR and FATAL_ERROR statuses. |
| 256 optional ErrorCode error_code = 3; | 243 optional ErrorCode error_code = 3; |
| 257 // Version of 'auth' component on Replica, see components/auth/version.py. | 244 // Version of 'auth' component on Replica, see components/auth/version.py. |
| 258 optional string auth_code_version = 4; | 245 optional string auth_code_version = 4; |
| 259 } | 246 } |
| OLD | NEW |