Spring SecurityとKeycloakによって「アクセスが拒否されました」というエラーが表示されるのはなぜですか?

ウィリアム:

DockerでKeycloakサーバーをセットアップしました。レルムやクライアントなどを構成しました。一部のRestControllersのSpring Bootサービスを正常に作成できました。そのように働きます。

しかし、Spring SecurityをKeycloak Adapterで使用しようとすると、行き詰まってしまいます。

これが私のSecurityConfigです:

@KeycloakConfiguration
class SecurityConfig : KeycloakWebSecurityConfigurerAdapter() {

    @Autowired
    lateinit var keycloakClientRequestFactory: KeycloakClientRequestFactory

    @Bean
    fun keycloakConfigResolver(): KeycloakSpringBootConfigResolver = KeycloakSpringBootConfigResolver()

    @Bean
    override fun sessionAuthenticationStrategy(): SessionAuthenticationStrategy =
        NullAuthenticatedSessionStrategy()

    @Autowired
    @Throws(Exception::class)
    fun configureGlobal(auth: AuthenticationManagerBuilder) {
        val keycloakAuthProvider: KeycloakAuthenticationProvider = keycloakAuthenticationProvider()
        keycloakAuthProvider.setGrantedAuthoritiesMapper(SimpleAuthorityMapper())
        auth.authenticationProvider(keycloakAuthProvider)
    }

    @Throws(Exception::class)
    override fun configure(http: HttpSecurity) {
        super.configure(http)
        http.cors().disable()
            .csrf().disable()
            .exceptionHandling().and()
            .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            .sessionAuthenticationStrategy(sessionAuthenticationStrategy()).and()
            .formLogin().disable()
            .authorizeRequests()
            .antMatchers("/apps/manual-data-collection/**").hasRole("user")
            .anyRequest().permitAll()
    }

    /**
     * https://www.keycloak.org/docs/latest/securing_apps/index.html#avoid-double-bean-registration
     */
    @Bean
    @ConditionalOnMissingBean(HttpSessionManager::class)
    override fun httpSessionManager(): HttpSessionManager = HttpSessionManager()

}

ここでサーバーにアクセスしようとしましたが、403 Forbidden Errorが発生しました。以下は春ごとのログです:

2020-01-08 14:08:01.817 DEBUG 12396 --- [nio-8080-exec-5] o.s.s.w.u.matcher.AntPathRequestMatcher  : Checking match of request : '/apps/manual-data-collection/document-templates'; against '/apps/manual-data-collection/**'
2020-01-08 14:08:01.817 DEBUG 12396 --- [nio-8080-exec-5] o.s.s.w.a.i.FilterSecurityInterceptor    : Secure object: FilterInvocation: URL: /apps/manual-data-collection/document-templates; Attributes: [hasRole('ROLE_user')]
2020-01-08 14:08:01.817 DEBUG 12396 --- [nio-8080-exec-5] o.s.s.w.a.i.FilterSecurityInterceptor    : Previously Authenticated: org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken@bc432bbc: Principal: willy; Credentials: [PROTECTED]; Authenticated: true; Details: org.keycloak.adapters.springsecurity.account.SimpleKeycloakAccount@42db7613; Not granted any authorities
2020-01-08 14:08:01.818 DEBUG 12396 --- [nio-8080-exec-5] o.s.s.access.vote.AffirmativeBased       : Voter: org.springframework.security.web.access.expression.WebExpressionVoter@3d0602a7, returned: -1
2020-01-08 14:08:01.818 DEBUG 12396 --- [nio-8080-exec-5] o.s.s.w.a.ExceptionTranslationFilter     : Access is denied (user is not anonymous); delegating to AccessDeniedHandler

org.springframework.security.access.AccessDeniedException: Access is denied

私を混乱させるのは、それが言うことです:Not granted any authoritiesこの部分を省略しても、すべてが正常に機能します。必要なロール(この場合は「ユーザー」)はレルムに格納されます。JWTトークンもこれらを提供します。なぜうまくいかないのか私にはわかりません。

編集:私は言及すべきです。Spring Boot Serverは、AngularアプリケーションのRESTサーバーとしてのみ使用する必要があるため、これを使用しますSTATELESS

ウィリアム:

はい、間違いを見つけました。application.ymlで以下をアクティブにしました:

keycloak.use-resource-role-mappings=true

しかし、それはそうでなければなりませんfalseKeycloakのドキュメントには次のように書かれています:

use-resource-role-mappings -trueに設定されている場合、アダプターはトークン内でユーザーのアプリケーションレベルのロールマッピングを検索します。falseの場合、ユーザーロールマッピングのレルムレベルを調べます。これはオプションです。デフォルト値はfalseです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Spring Boot / Spring Security Webアプリで.cssファイルを開こうとすると、「405-メソッドが許可されていません」というエラーが表示されるのはなぜですか?

分類Dev

Springの@PostMapping @Requestbodyがエスケープされた文字として表示されるのはなぜですか?

分類Dev

Spring Security4.1のアップグレード-エラー403アクセスが拒否されました

分類Dev

Spring Security4.1のアップグレード-エラー403アクセスが拒否されました

分類Dev

Spring Security4.1のアップグレード-エラー403アクセスが拒否されました

分類Dev

ELB&Spring Boot:サーバーポートが正しく構成されていても、「アップストリームへの接続中に(111:接続が拒否されました)」というエラーが発生しますか?

分類Dev

Spring Bootアプリケーションはこのエラーを出します:ユーザー 'root' @ 'localhost'のアクセスが拒否されましたが、コンソールでログインするとすべてが正常に機能します

分類Dev

アクセスが拒否され、申し訳ありませんが、プラグインSpring SecurityコアをGrailsで2.0バージョンにアップグレードした後、このページを表示する権限がありません

分類Dev

Springセキュリティログ、または承認されていない(アクセスが拒否された)リクエストごとにカスタムメッセージを追加

分類Dev

別のDockerコンテナで実行されているSpringブートアプリによって接続が拒否されました

分類Dev

「エンティティクラスにプロパティノードが見つかりません…コンストラクタパラメータをバインドします!」というメッセージが表示されるのはなぜですか。Spring DataMongoDBを使用

分類Dev

Spring Securityでユーザーが特定のコントローラーまたはURLにアクセスすることを許可されていない場合は、ログインページを表示する必要があります。それを達成する方法は?

分類Dev

Spring SecurityのhasPermissionを使用している場合、ページへのアクセスが拒否されました

分類Dev

Spring Securityを使用しているときにVaadinのログインページが表示されないのはなぜですか

分類Dev

MySQLとJPAによるSpringカスタムセキュリティで403アクセスが拒否されました

分類Dev

Spring Security-アクセスが拒否されました(ユーザーは匿名ではありません)spring-security-core-4.0.3.RELEASE

分類Dev

Spring Securityがクラスパス上にあるときに、失敗したSpring Bootアクチュエーターのヘルスインジケーターをデバッグするにはどうすればよいですか?

分類Dev

angular + springでマルチパート境界が見つからなかったため、リクエストは拒否されました

分類Dev

bootstrap.propertiesで定義されたとき、どのように私は「spring.application.name」にアクセスすることができますか?

分類Dev

Springブートアプリケーションへのアクセスが、Dockerツールボックスで実行されているIP192.168.99.100との接続を拒否しました

分類Dev

dhclientが「SIOCSIFADDR:アクセスが拒否されました」と言っているのはなぜですか?

分類Dev

dhclientが「SIOCSIFADDR:アクセスが拒否されました」と言っているのはなぜですか?

分類Dev

Spring Boot:RequestRejectedException:URLに悪意のある可能性のある文字列 ";"が含まれているため、リクエストは拒否されました。

分類Dev

Spring Boot:RequestRejectedException:URLに悪意のある可能性のある文字列 ";"が含まれているため、リクエストは拒否されました。

分類Dev

Spring Boot:RequestRejectedException:URLに悪意のある可能性のある文字列 ";"が含まれているため、リクエストは拒否されました。

分類Dev

SpringでH2データベースにJSONデータを挿入するために、「認識できないフィールド "名前、無視できるものとしてマークされていません"というエラーを回避するにはどうすればよいですか?

分類Dev

Springブートアプリをherokuにプッシュしようとすると、「致命的なエラーコンパイル:無効なターゲットリリース:11」が返されるのはなぜですか

分類Dev

JHipster Spring ConfigServerを使用してアクセスが拒否されました

分類Dev

JHipster Spring ConfigServerを使用してアクセスが拒否されました

Related 関連記事

  1. 1

    Spring Boot / Spring Security Webアプリで.cssファイルを開こうとすると、「405-メソッドが許可されていません」というエラーが表示されるのはなぜですか?

  2. 2

    Springの@PostMapping @Requestbodyがエスケープされた文字として表示されるのはなぜですか?

  3. 3

    Spring Security4.1のアップグレード-エラー403アクセスが拒否されました

  4. 4

    Spring Security4.1のアップグレード-エラー403アクセスが拒否されました

  5. 5

    Spring Security4.1のアップグレード-エラー403アクセスが拒否されました

  6. 6

    ELB&Spring Boot:サーバーポートが正しく構成されていても、「アップストリームへの接続中に(111:接続が拒否されました)」というエラーが発生しますか?

  7. 7

    Spring Bootアプリケーションはこのエラーを出します:ユーザー 'root' @ 'localhost'のアクセスが拒否されましたが、コンソールでログインするとすべてが正常に機能します

  8. 8

    アクセスが拒否され、申し訳ありませんが、プラグインSpring SecurityコアをGrailsで2.0バージョンにアップグレードした後、このページを表示する権限がありません

  9. 9

    Springセキュリティログ、または承認されていない(アクセスが拒否された)リクエストごとにカスタムメッセージを追加

  10. 10

    別のDockerコンテナで実行されているSpringブートアプリによって接続が拒否されました

  11. 11

    「エンティティクラスにプロパティノードが見つかりません…コンストラクタパラメータをバインドします!」というメッセージが表示されるのはなぜですか。Spring DataMongoDBを使用

  12. 12

    Spring Securityでユーザーが特定のコントローラーまたはURLにアクセスすることを許可されていない場合は、ログインページを表示する必要があります。それを達成する方法は?

  13. 13

    Spring SecurityのhasPermissionを使用している場合、ページへのアクセスが拒否されました

  14. 14

    Spring Securityを使用しているときにVaadinのログインページが表示されないのはなぜですか

  15. 15

    MySQLとJPAによるSpringカスタムセキュリティで403アクセスが拒否されました

  16. 16

    Spring Security-アクセスが拒否されました(ユーザーは匿名ではありません)spring-security-core-4.0.3.RELEASE

  17. 17

    Spring Securityがクラスパス上にあるときに、失敗したSpring Bootアクチュエーターのヘルスインジケーターをデバッグするにはどうすればよいですか?

  18. 18

    angular + springでマルチパート境界が見つからなかったため、リクエストは拒否されました

  19. 19

    bootstrap.propertiesで定義されたとき、どのように私は「spring.application.name」にアクセスすることができますか?

  20. 20

    Springブートアプリケーションへのアクセスが、Dockerツールボックスで実行されているIP192.168.99.100との接続を拒否しました

  21. 21

    dhclientが「SIOCSIFADDR:アクセスが拒否されました」と言っているのはなぜですか?

  22. 22

    dhclientが「SIOCSIFADDR:アクセスが拒否されました」と言っているのはなぜですか?

  23. 23

    Spring Boot:RequestRejectedException:URLに悪意のある可能性のある文字列 ";"が含まれているため、リクエストは拒否されました。

  24. 24

    Spring Boot:RequestRejectedException:URLに悪意のある可能性のある文字列 ";"が含まれているため、リクエストは拒否されました。

  25. 25

    Spring Boot:RequestRejectedException:URLに悪意のある可能性のある文字列 ";"が含まれているため、リクエストは拒否されました。

  26. 26

    SpringでH2データベースにJSONデータを挿入するために、「認識できないフィールド "名前、無視できるものとしてマークされていません"というエラーを回避するにはどうすればよいですか?

  27. 27

    Springブートアプリをherokuにプッシュしようとすると、「致命的なエラーコンパイル:無効なターゲットリリース:11」が返されるのはなぜですか

  28. 28

    JHipster Spring ConfigServerを使用してアクセスが拒否されました

  29. 29

    JHipster Spring ConfigServerを使用してアクセスが拒否されました

ホットタグ

アーカイブ