Google Cloud Run终端用户认证

我正在使用Google Cloud Run来做一个简单的POC Web应用,我希望暂时依靠GCP IAM来处理身份验证,类似于Identity-Aware Proxy (IAP)可以和App Engine或GKE一起使用。我希望暂时依靠GCP IAM来处理身份验证,类似于Identity-Aware Proxy(IAP)与App Engine或GKE的结合使用。

当我把Cloud Run Invoker角色给用户时,我希望认证工作能类似于IAP的工作方式(登录重定向auth流),但我得到的却是403错误。我可以通过设置 Authorization 不过头。

是否需要在应用中实现面向用户的Web应用的认证?我希望依靠IAM来做一个快速的原型。如果需要,对于一个简单的原型来说,有什么推荐的方式来实现OAuth2认证?Firebase认证?

解决方案:

在这里运行PM。

是的,现在你需要托管自己的OAuth客户端,例如:。

<html>
  <head>
    <title>Google Sign-in + Run</title>
    <script src="https://apis.google.com/js/platform.js"></script>
    <script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script>
    <meta name="google-signin-client_id" content="{OAUTH_CLIENT_ID}">
  </head>

  <body>
      <div class="g-signin2" data-onsuccess="onSignIn"></div></br>
    <div>
      <div id="returned-text"></div></br>
      <button id="test">Test</button>
    </div>
    <script>
    var id_token;

    function onSignIn(googleUser) {
      id_token = googleUser.getAuthResponse().id_token;
    }

    $(document).ready(function() {
      $('#test').on('click', function () {
        var serviceURL = 'https://...';

        var xhr = new XMLHttpRequest();
        xhr.open('GET', functionURL);
        xhr.setRequestHeader('Authorization', 'bearer ' + id_token);
        xhr.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
               $('#returned-text').text(xhr.responseText);
            }
        };
        xhr.send();
      });
    });
    </script>
  </body>
</html>

请注意,CORS在这里会变得不稳定,我们建议在同一个源头上托管,以摆脱这个问题(例如,使用的。Firebase主机集成).

在未来,我们很可能会提供IAP(为你托管一个OAuth客户端)。

本文来自投稿,不代表实战宝典立场,如若转载,请注明出处:https://www.shizhanbaodian.com/30749.html

(0)
上一篇 1天前
下一篇 1天前

相关推荐

发表评论

登录后才能评论