首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌ClassRoom OAuth集成春季启动

问谷歌ClassRoom OAuth集成春季启动
EN

Stack Overflow用户
提问于 2020-07-09 12:27:24
回答 1查看 147关注 0票数 1

我正在使用Spring Boot和JSF创建一个web应用程序,我的目的是从我的应用程序在google课堂中创建课程。

我效仿谷歌,通过Oauth进行身份验证:https://url.miapp.io/oS2mx

实现示例中ClassroomQuickstart类,但是当您在web应用程序中使用getService()方法时,它会在Tomcat Embeded Console (Spring Boot)中向我发送一个Google URL,以便我自己从浏览器进行身份验证,然后我就可以继续我的代码流程了。

换句话说,身份验证在交互模式下工作,等待我从浏览器进行身份验证,以便应用程序可以继续执行流程,我不知道我应该做什么,这样我就不必以这种方式对自己进行身份验证,我不知道是代码实现了它,还是与google开发人员控制台中的配置有关。

EN

回答 1

Stack Overflow用户

发布于 2020-07-14 22:37:07

3条腿OAuth:

您目前正在遵循一个三足鼎立的OAuth流程,其中涉及三方:(#1)最终用户、(#2)应用程序和(#3)授权服务器。在此OAuth流中,用户需要通过浏览器通过同意屏幕明确同意应用程序。

双腿OAuth:

由于您希望避免这种情况,因此您应该使用服务帐户来访问此应用程序,这样就不会直接涉及用户,并且不需要用户同意。此工作流通常称为双路OAuth (仅涉及应用程序和授权服务器)。更深入的解释请参见Using OAuth 2.0 for Server to Server Applications。

由于您不希望服务帐户单独运行应用程序,而是代表域中的其他帐户运行应用程序,因此您应该向它授予域范围的权限,以便它可以模拟域中的其他帐户。

工作流程:

要实现这一点,您必须执行以下步骤:

通过对服务帐户执行以下this guide.

  • Delegate域范围的授权来创建
  • 服务帐户(您必须是域管理员才能执行此操作):此步骤授权服务帐户代表域中的任何用户访问数据。按照说明的步骤here.
  • Once您已经委派了域范围的授权,您必须修改与构建OAuth凭据相关的代码。例如,使用this answer

中提供的代码示例

代码语言:javascript
复制
GoogleCredential credential = new GoogleCredential.Builder()
    .setTransport(HTTP_TRANSPORT)
    .setJsonFactory(JSON_FACTORY)
    .setServiceAccountId("service-account@email-address") // Service account email
    .setServiceAccountPrivateKeyFromP12File(new File("your-credentials.p12"))
    .setServiceAccountScopes(Collections.singleton(ClassroomScopes.CLASSROOM_COURSES))
    .setServiceAccountUser("user@email-address") // Your email address (address of the user you want to impersonate)
    .build();

在本例中,user@email-address是指创建课程时所代表的帐户。换句话说,它将是服务帐户应该模拟的帐户。关于P12文件,应该从云控制台下载,如here所述。这可以使用JSON文件而不是P12 (参见here)来完成。

参考资料:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62807438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档