[ARVADOS] created: 1.1.2-60-g7ec6b57

Git user git at public.curoverse.com
Mon Jan 15 17:30:42 EST 2018


        at  7ec6b571c54af1ddd404488b2922c41dfdffdde1 (commit)


commit 7ec6b571c54af1ddd404488b2922c41dfdffdde1
Author: Tom Clegg <tclegg at veritasgenetics.com>
Date:   Mon Jan 15 17:07:25 2018 -0500

    12705: Note 5 minute cache effect during user migration.
    
    Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tclegg at veritasgenetics.com>

diff --git a/doc/admin/merge-remote-account.html.textile.liquid b/doc/admin/merge-remote-account.html.textile.liquid
index 005332b..1ce35e9 100644
--- a/doc/admin/merge-remote-account.html.textile.liquid
+++ b/doc/admin/merge-remote-account.html.textile.liquid
@@ -43,3 +43,5 @@ arvados.api('v1').users().update_uuid(
     uuid="<span class="userinput">aaaaa-tpzed-abcdefghijklmno</span>",
     new_uuid="bbbbb-tpzed-"+random_chars).execute()
 </code></pre></notextile>
+
+After this is done and the migration is complete, the affected user should wait 5 minutes for the authorization cache to expire before using the remote cluster.

commit 87b24df10b354794904d6c3dea6258dd0f45adc3
Author: Tom Clegg <tclegg at veritasgenetics.com>
Date:   Mon Jan 15 16:55:56 2018 -0500

    12705: Update authorized user when refreshing token cache.
    
    Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tclegg at veritasgenetics.com>

diff --git a/services/api/app/models/api_client_authorization.rb b/services/api/app/models/api_client_authorization.rb
index 3af206c..b158faa 100644
--- a/services/api/app/models/api_client_authorization.rb
+++ b/services/api/app/models/api_client_authorization.rb
@@ -185,7 +185,10 @@ class ApiClientAuthorization < ArvadosModel
         # 5 minutes. TODO: Request the actual api_client_auth
         # record from the remote server in case it wants the token
         # to expire sooner.
-        auth.update_attributes!(expires_at: Time.now + 5.minutes)
+        auth.update_attributes!(user: user,
+                                api_token: secret,
+                                api_client_id: 0,
+                                expires_at: Time.now + 5.minutes)
       end
       return auth
     else
@@ -207,10 +210,8 @@ class ApiClientAuthorization < ArvadosModel
   end
 
   def permission_to_update
-    (permission_to_create and
-     not uuid_changed? and
-     not user_id_changed? and
-     not owner_uuid_changed?)
+    permission_to_create && !uuid_changed? &&
+      (current_user.andand.is_admin || !user_id_changed?)
   end
 
   def log_update
diff --git a/services/api/test/integration/remote_user_test.rb b/services/api/test/integration/remote_user_test.rb
index 591bbaf..6d7f4a0 100644
--- a/services/api/test/integration/remote_user_test.rb
+++ b/services/api/test/integration/remote_user_test.rb
@@ -104,6 +104,13 @@ class RemoteUsersTest < ActionDispatch::IntegrationTest
     get '/arvados/v1/users/current', {format: 'json'}, auth(remote: 'zbbbb')
     assert_response 401
 
+    # simulate cached token indicating wrong user (e.g., local user
+    # entry was migrated out of the way taking the cached token with
+    # it, or authorizing cluster reassigned auth to a different user)
+    ApiClientAuthorization.where(
+      uuid: salted_active_token(remote: 'zbbbb').split('/')[1]).
+      update_all(user_id: users(:active).id)
+
     # revive original token and re-authorize
     @stub_status = 200
     @stub_content[:username] = 'blarney'

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list