首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用执行授权代码授权流

使用执行授权代码授权流
EN

Stack Overflow用户
提问于 2020-05-31 08:05:18
回答 2查看 441关注 0票数 1

我试图使用调用一个需要授权的第三方端点,因此我需要执行一个授权代码授权流。

我理解我需要的流程,首先获取代码,然后将代码交换为JWT,最后使用JWT来执行安全调用。

对我来说没有意义的是,当我只使用没有UI的后端rest时,我应该如何设置一个重定向URI。通常,用户被重定向到登录页面,在该页面中,用户要么使用用户名/密码登录,要么使用第三方帐户登录(google/facebook.)

在大量的googling之后,所有的搜索都以指南结束,以保护我自己的端点,而不是从我的spring引导服务中访问一个安全端点。

编辑:值得一提的是,我只使用没有前端(或MVC)的后端,在@Partha的评论之后,我做了以下操作:

First,我添加了一个新的登录端点,当通过浏览器访问时(这不适用于swagger/postman),它应该将用户重定向到授权服务器:

代码语言:javascript
复制
@GetMapping
public void login(HttpServletResponse httpServletResponse) {
    httpServletResponse.setHeader("Location", getAuthServerEndpoint());
    httpServletResponse.setStatus(302);
}

在这里,我构建了端点以获得所需的所有数据(client_id,redirect_uri.)所以看起来就像

type=code&scope=xyz

现在它将我发送到auth Server的login页面,在我登录后,我希望它将我重定向到localhost/token (这是一个get请求,它将检索代码并执行post请求来获取jwt并保存它),但是我却收到了一个无效的重定向uri,我真的不确定这是来自我的实现还是服务器的问题

EDIT2:我犯了一个愚蠢的错误,没有在Auth中添加http://localhost:8080/token作为重定向url,因为我假设我不需要

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-31 12:39:56

不太确定你是怎么做的。这里的想法是..。您的api服务器应该有一个get端点/login。在您的/login控制器中,您应该重定向到IDP (例如uri=http://localhost:8080/token ) (注意,它的重定向,而不是发出api请求)。因此,当您在浏览器中单击http://localhost:8080/login时,应该会看到它被重定向到IDP。现在输入您的凭据,IDP验证它并将其重定向回http://localhost:8080/token?code=XYZABC或类似的东西。您的/token API控制器代码应该从url读取代码。并对IDP进行调用(这是api调用,而不是重定向),以便根据您的作用域将代码交换为令牌( idToken / accessToken)。使用令牌,您应该能够访问受保护的资源。希望这有帮助

票数 2
EN

Stack Overflow用户

发布于 2020-05-31 09:11:13

根据您使用的是、MVC、网络流量,需要一种不同的方法:

  • MVC:包括一个“安全过滤器”来实现这一点。您将能够在以下链接中看到一个示例:

MVC安全管理器

MVC安全过滤器

MVC安全配置

  • 网络流量:配置您自己的安全管理器。您将能够在以下链接中看到一个示例:

网络流量安全管理器

网络流量安全上下文

网络流量安全配置

正如您在这两种服务中所看到的那样,调用外部服务(使用RestTemplateMVC中使用WebClient,在 get流量中使用WebClient)来获取所需的授权信息,并决定“日志用户”是否通过所需的安全逻辑。

你可以用你需要的方式来调整它。

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

https://stackoverflow.com/questions/62113277

复制
相关文章

相似问题

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