使用Spring Boot Actuator监视Java应用程序

朋友不允许朋友写用户身份验证。 厌倦了管理自己的用户? 立即尝试Okta的API和Java SDK。 在几分钟之内即可对任何应用程序中的用户进行身份验证,管理和保护。

您是否曾与Spring Boot Actuator合作? 这是一个非常有用的库,可帮助您监视应用程序的运行状况以及与应用程序的交互-非常适合投入生产! Spring Boot Actuator包含一个内置端点,该端点用于跟踪对您的应用程序的HTTP调用-对于监视OpenID Connect(OIDC)请求非常有用-但不幸的是,默认实现不跟踪主体内容。 在这篇文章中,我将向您展示如何扩展httptrace端点以捕获内容并跟踪OIDC流。

让我们开始吧!

使用Spring Initializr和Okta创建一个OpenID Connect应用程序

您可以使用出色的Spring Initializr网站或API通过Okta集成创建示例OIDC应用程序:

curl https://start.spring.io/starter.zip \
  dependencies==web,okta \
  packageName==com.okta.developer.demo -d

但是,在运行OIDC应用程序之前,您将需要一个Okta帐户。 Okta是一项开发人员服务,可为您处理存储用户帐户和实施用户管理(包括OIDC)。 继续并注册一个免费的开发者帐户以继续。

登录到Okta帐户后,转到仪表板,然后转到“ 应用程序”部分。 添加一个新的Web应用程序,然后在“常规”部分中获取客户端凭据: 客户端ID客户端密钥

您还将需要颁发者 ,它也是组织URL,您可以在仪表板主页的右上角找到它。 注意 :默认情况下,内置的Everyone Okta组已分配给该应用程序,因此Okta组织中的任何用户都可以对其进行身份验证。

使用您的客户ID,客户密码。 然后在适当的位置发行人,通过在命令行中传递凭据来启动您的应用程序:

OKTA_OAUTH2_REDIRECTURI=/authorization-code/callback \
OKTA_OAUTH2_ISSUER=<issuer>/oauth2 \
OKTA_OAUTH2_CLIENT_ID=<client id> \
OKTA_OAUTH2_CLIENT_SECRET=<client secret> \
./mvnw spring-boot:run

将测试控制器添加到Spring Boot App

最好添加一个简单的控制器来测试身份验证流程。 默认情况下,仅允许经过身份验证的用户访问。

@Controller
@RequestMapping(value = "/hello")
public class HelloController {

    @GetMapping(value = "/greeting")
    @ResponseBody
    public String getGreeting(Principal user) {
        return "Good morning " + user.getName();
    }
}

您可以通过重新启动应用程序并浏览到/ hello / greeting来进行测试

添加Spring Boot Actuator依赖关系

通过将启动器Maven依赖项添加到pom.xml file来启用Spring Boot Actuator:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

要启用httptrace端点,请编辑src/main/resources/application.properties并添加以下行:

management.endpoints.web.exposure.include=info,health,httptrace

您可以运行应用程序并浏览到/ hello / greeting并登录,以测试现成的执行器功能。

在自动配置下,Spring Security过滤器的优先级高于httptrace执行器添加的过滤器。

这意味着默认情况下仅跟踪经过身份验证的呼叫。 我们将在此处对此进行更改,但是现在,您可以在/ actuator / httptrace中看到跟踪的内容 。 响应应类似于以下JSON有效负载:

{
   "traces":[
      {
         "timestamp":"2019-05-19T05:38:42.726Z",
         "principal":{
            "name":"***"
         },
         "session":{
            "id":"***"
         },
         "request":{
            "method":"GET",
            "uri":"http://localhost:8080/",
            "headers":{},
            "remoteAddress":"0:0:0:0:0:0:0:1"
         },
         "response":{
            "sta
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值