小编Mik*_*ike的帖子

Keycloak中用户的多种身份验证方法

我想让我的用户选择使用哪种身份验证方法。例如,他们可以看到一个菜单来选择一个选项(用户名/通行证、用户名/通行证+OTP 等)。然后,Keycloak 应该根据他们的选择,为令牌分配特定的范围。

这是否可能与 Keycloak 相关(可能通过某种方式利用身份验证方法链接)以及如何使用?我在文档中找不到这个,但对我来说这似乎是一个合理的用例。

keycloak

5
推荐指数
2
解决办法
2197
查看次数

如何使用IO monad在猫中撰写理解力

我有以下代码:

import cats.effect.IO
import cats.data.State
import cats.data.StateT
import cats.implicits._
import cats.effect.LiftIO

abstract class Example {
    object implicits {
        implicit def myEffectLiftIO: LiftIO[IOGameplay] =
            new LiftIO[IOGameplay] {
                override def liftIO[A](ioa: IO[A]): IOGameplay[A] = {
                    StateT.liftF(ioa)
                }
            }
    }

    type Gameplay[A] = State[GameState, A]
    type IOGameplay[A] = StateT[IO, GameState, A]
    type EitherDirection[A] = Either[Throwable, A]

    type Map = Array[Array[FieldType]]
    sealed trait FieldType
    case class GameState(map: Map, block: Block)
    case class Block(f1: Field, f2: Field) 
    case class Field()

    import implicits._
    val L = …
Run Code Online (Sandbox Code Playgroud)

scala scala-cats cats-effect

5
推荐指数
1
解决办法
103
查看次数

在Scala中将功能重复N次

我想创建一个函数,该函数将返回一个函数,该函数是参数x上f的n倍的函数,即f(f(f ... f(x)...))。这是我的代码:

def repeated(f: Int => Int, n: Int) = {
   var tek: Int => Int = f

   for (i <- 0 to n) {
     tek = x => f(tek(x))
   }
   tek
}
Run Code Online (Sandbox Code Playgroud)

我知道这不是在Scala中执行此操作的正确方法,我只想了解幕后发生的事情。

调用它repeated(x => x + 1, 5)(1)会导致堆栈溢出。
我在调试器中注意到的是,重复完成后将执行for循环内的行。似乎是惰性启动,也许for循环的主体是按名称传递的lambda?

scala

3
推荐指数
2
解决办法
614
查看次数

如何从Cats State创建Cats IO monad

我正在与猫打交道,我想将其转换val x: State[A, B]为猫StateT[IO, A, B]。注意:IO来自猫的效果。
如何优雅地做到这一点?

scala scala-cats cats-effect

3
推荐指数
1
解决办法
106
查看次数

反应流与反应器模式?

我想知道反应流(由反应宣言定义)和反应器模式( https://en.wikipedia.org/wiki/Reactor_pattern )之间有什么关系。我读到 Project Reactor,我认为它是 Reactor 模式的实现,实现了 Reactive Streams API。但是 Project Reactor 如何将 Reactor 模式的概念转化为流概念。这两个领域的抽象是如何链接的?

project-reactor reactive-streams

3
推荐指数
1
解决办法
559
查看次数

OIDC 中的 OAuth2 角色

在 OAuth2 协议中,客户端(OIDC 中的 RP)应用程序获取访问令牌,这使其能够代表Resource Owner使用不同的服务(资源服务器角色)。 另一方面,在 OpenID Connect 协议中,Client获得 2 个令牌(access 和 id 令牌)。现在此客户端可以使用访问令牌从 UserInfo 端点获取用户声明。


  1. OP(授权服务器)是否在这里扮演资源服务器的角色(就 OAuth2 而言),而客户端代表用户获取用户数据?
  2. 客户端如何使用 ID 令牌?客户端是否将此 ID 令牌传递给资源所有者的用户代理(浏览器),然后用户代理存储此令牌以启用 SSO(cookie)?
  3. 客户端(例如,与获取 ID 令牌的那个不同)是否必须在每次用户访问令牌时验证令牌(调用 OP 来验证它),或者客户端仅在第一次被此令牌访问时才这样做,然后创建安全性上下文使其能够消除每次在 OP 进行验证的请求?在这种情况下,如何实现这个安全上下文?
  4. 当客户端可以使用 ID 令牌访问 UserInfo 端点时,访问令牌用于什么,除了获取用户声明以及为什么它与 ID 令牌一起发送?

oauth-2.0 openid-connect

2
推荐指数
1
解决办法
3215
查看次数