keycloak無効なパラメーター:redirect_uri


87

apiからヒットしてkeycloakからユーザーを認証しようとしていますが、エラーが発生します無効なパラメーター:keycloakページのredirect_uri。私はマスターとは別に自分の領域を作成しました。keycloakはhttpで実行されています。私を助けてください。


検査要素をチェックしている間、500エラーが表示されます
VIJAY THAKUR 2017

2
同じ質問を複数回投稿しないでください。元の質問に詳細を追加したい場合は、質問のすぐ下にある[編集]をクリックして追加できます。
THelper 2017


1
リダイレクトURLでhttpsとhttpを確認します
ThomasRS 2017

1
私の場合、それはばかげた間違いでした:「http:// <IPアドレス>」の代わりに「<IPアドレス>」
SwissNavy19年

回答:


56

私のために働いたのは、ワイルドカード'*'を追加することでした。本番ビルドの場合ですが、このフィールドの値についてより具体的に説明します。しかし、開発目的では、これを行うことができます。

ここに画像の説明を入力してください

keycloak管理コンソール-> Realm_Name-> Cients-> Client_Nameで利用可能な設定。

編集:これを本番環境で実行しないでください。これを行うと、大きなセキュリティ上の欠陥が発生します。


13
この答えは危険なセキュリティ上の欠陥である可能性があります。そうすることで、安全でないリダイレクト攻撃への扉が開かれます。
MichaelCourcy18年

この回答が現在トップ票を獲得しているとは信じられません。これは解決策にはほど遠いので、実際にはコメントにのみ表示する必要があります。一方で、質問には情報が少なすぎて答えることさえできません。
bsaverino

モバイルアプリ(React Nativeコード化)からKeycloakを使用する場合、そこに何を配置する必要がありますか?
セバスチャンディアス

35

.Net Devloperの場合は、以下を確認してください。構成keycloakAuthenticationオプションクラスセットCallbackPath = RedirectUri、//このプロパティを設定する必要があります。そうしないと、無効なリダイレクトエラーが表示されます。

私は同じエラーに直面しました。私の場合、問題は 有効なリダイレクトURIにありましたが正しくないことでした。それで、これらは私が従ったステップです。

管理者ユーザーとしてkeycloackに最初にログインします。次に、レルムを選択します(おそらく、レルムに自動転送されます)。次に、以下の画面が表示されます

ここに画像の説明を入力してください

左側のパネルから[クライアント]を選択します。次に、アプリ用に構成した関連クライアントを選択します。デフォルトでは、選択しない場合は[設定]タブになります。私のアプリはポート3000で実行されていたので、正しい設定は次のようになります。アプリがlocalhost:3000で実行されているとすると、設定は次のようになります。

ここに画像の説明を入力してください


19

作成した新しいレルムが原因でこのエラーが発生した場合

リダイレクト先のURLで(このURLについてはChrome開発ツールで確認する必要がある場合があります)、レルムをmaster作成したばかりのレルムに変更します。を使用していない場合はhttps、redirect_uriもを使用していることを確認してくださいhttp

公開されているドメイン(ローカルホストではない)でKeycloakをセットアップしようとしているためにこのエラーが発生した場合

ステップ1)このドキュメント に従って、MySqlデータベースをセットアップします。また、公式ドキュメントを参照する必要がある場合もあります

ステップ2) コマンドを実行しますupdate REALM set ssl_required = 'NONE' where id = 'master';

注: この時点で、技術的にはログインできるはずですが、バージョン4.0のKeycloakは、httpsサポートをオフにしただけでも、リダイレクトURIにhttpsを使用しています。Keycloakがこれを修正するまで、リバースプロキシでこれを回避できます。リバースプロキシは、Javaキーストアを気にすることなくSSL / TLS証明書を簡単に作成するためにとにかく使用したいものです。

注2: Keycloakはそれ以来独自のプロキシを備えています。私はまだこれを試していませんが、この時点で、私の指示に従うのをやめて、(keycloakゲートキーパー)[ https://www.keycloak.org/downloads.html]をチェックアウトすることをお勧めします。Keycloak Gatekeeperの設定で問題が発生した場合は、Apacheでリバースプロキシを設定するための手順を説明します。

ステップ3) Apacheをインストールします。Apacheをリバースプロキシとして使用します(NGINXを試しましたが、NGINXにはいくつかの制限がありました)。参照してください。Apacheのインストールyumを(CentOSの7)、およびApacheのインストールapt-getを(Ubuntuの16)、または特定のディストリビューションのための命令を見つけます。

ステップ4) Apacheを実行する

  • sudo systemctl start httpd(CentOs)またはsudo systemctl start apache2(Ubuntu)を使用する

  • 使用sudo systemctl status httpd(CentOSの)またはsudo systemctl status apache2 (Ubuntuの)Apacheが動作しているかどうかを確認します。緑色のテキストで単語が表示されているactive (running)場合、または最後のエントリが読み取られStarted The Apache HTTP Server.ている場合は、問題ありません。

ステップ5)リバースプロキシとのSSL接続を確立し、リバースプロキシはhttp経由でkeyCloakと通信します。このhttp通信は同じマシンで行われているため、安全です。Certbotを使用して、自動更新証明書を設定できます。

このタイプの暗号化では不十分であり、セキュリティポリシーでエンドツーエンドの暗号化が必要な場合は、リバースプロキシを使用する代わりに、WildFlyを介してSSL設定する方法を理解する必要があります

注: 実際にhttpsを管理ポータルで正しく機能させることはできませんでした。おそらく、これは私が使用しているKeycloak4.0のベータ版のバグであった可能性があります。外部リクエストにのみSSLレベルを要求するように設定できると思われますが、これは機能していないようです。そのため、手順2でhttpsをnoneに設定しました。これ以降、管理者設定を管理するためにSSHトンネルを介してhttpを引き続き使用します。

ステップ6) https経由でサイトにアクセスしようとすると、HSTSポリシーがトリガーされ、httpリクエストがhttpsにリダイレクトされるように自動強制されます。次の手順に従ってChromeからHSTSルールクリアしてから、当面の間、httpsバージョンのサイトに再度アクセスしないでください。

ステップ7) Apacheを設定します。まず、httpd.confファイルの場所を見つけます。httpd.confファイルには、おそらく別のディレクトリの設定ファイルが含まれています。私の場合、すべての設定ファイルがconf.d httpd.confファイルがあったフォルダーの隣ディレクトリにた。

confファイルを見つけたら、confファイルに次の仮想ホストエントリを変更または追加します。certbotによって生成された既存のSSLオプションをオーバーライドしないようにしてください。完了すると、構成ファイルは次のようになります。

<VirtualHost *:80>
    RewriteEngine on

    #change https redirect_uri parameters to http
    RewriteCond %{request_uri}\?%{query_string} ^(.*)redirect_uri=https(.*)$
    RewriteRule . %1redirect_uri=http%2 [NE,R=302]

    #uncomment to force https
    #does not currently work
    #RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI}

    #forward the requests on to keycloak
    ProxyPreserveHost On    
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
    RewriteEngine on

    #Disable HSTS
    Header set Strict-Transport-Security "max-age=0; includeSubDomains;" env=HTTPS


    #change https redirect_uri parameters to http
    RewriteCond %{request_uri}\?%{query_string} ^(.*)redirect_uri=https(.*)$
    RewriteRule . %1redirect_uri=http%2 [NE,R=302]

    #forward the requests on to keycloak
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/

    #Leave the items added by certbot alone
    #There should be a ServerName option
    #And a bunch of options to configure the location of the SSL cert files
    #Along with an option to include an additional config file

</VirtualHost>
</IfModule>

ステップ8) Apacheを再起動します。使用sudo systemctl restart httpd(CentOSの)またはsudo systemctl restart apache2(Ubuntuの)。

ステップ9) サーバーへのログインを試みる前に、Keycloakにhttpを使用するように指示したため、安全に接続する別の方法を設定する必要があります。これは、キークロークサーバーにVPNサービスをインストールするか、SOCKSを使用して実行できます。SOCKSプロキシを使用しました。これを行うには、最初に動的ポート転送を設定する必要があります。

ssh -N -D 9905 user@example.com

または、Puttyを介して設定します。

これで、ポート9905に送信されたすべてのトラフィックが、SSHトンネルを介してサーバーに安全にルーティングされます。サーバーのファイアウォールでポート9905をホワイトリストに登録してください。

動的ポート転送を設定したら、ポート9905でSOCKSプロキシを使用するようにブラウザを設定する必要があります手順はこちら

ステップ10)これでKeycloak管理ポータルにログインできるようになります。Webサイトに接続するには、http://127.0.0.1にアクセスすると、SOCKSプロキシによって管理コンソールに移動します。サーバーのリソースを利用するため、完了したら必ずSOCKSプロキシをオフにしてください。オンのままにすると、インターネット速度が低下します。

ステップ11)これらすべてを理解するのにどれくらいの時間がかかったか私に聞かないでください。


1
これが私の注意を引いた行でした:#change httpsredirect_uriパラメーターをhttpRewriteCond%{request_uri} \?%{query_string} ^(。*)redirect_uri = https(。*)$ RewriteRuleに変更します。%1redirect_uri = http%2 [NE、R = 302] nginxを使用していますが、redirect_uriでhttpsをhttpに置き換えるとすぐに機能しました。
Telmo Dias 2018年

9

keycloak管理コンソール> SpringBootKeycloak> Cients> login-appページに移動します。ここでvalid-redirecturisセクションにhttp:// localhost:8080 / sso / loginを追加し ます

これは、間接URIの問題を解決するのに役立ちます


13
問題は、管理コンソールにアクセスできないことです。
smallChess 2018

Keycloakのweb-context設定を変更した後、この問題が発生しました
Mark

5

Keycloakコンテキストパスに変更を加えた後にこの問題が発生した場合は、リダイレクトURL設定に追加の変更を加える必要があります。

  1. 変更<web-context>yourchange/auth</web-context>にバック <web-context>auth</web-context>でstandalone.xml
  2. Keycloakを再起動し、ログインページに移動します(/auth/admin
  3. ログインして「マスター」レルムを選択します
  4. サイドメニューから「クライアント」を選択します
  5. 表示されるリストから「security-admin-console」クライアントを選択します
  6. 「有効なリダイレクトURI」をから/auth/admin/master/console/*に 変更します/yourchange/auth/admin/master/console/*
  7. 保存してサインアウトします。サインアウトすると、「Invalidredirecturl」メッセージが再び表示されます。
  8. ここで、<web-context>yourchange/auth</web-context>standalone.xmlに元の変更を入れます 。Keycloakを再起動し、ログインページ(現在は/yourchange/auth/admin)に移動します。
  9. ログインしてお楽しみください

1
または、redirect_urisDBのテーブルを編集して、値フィールドを調整することもできます
pHiL 2018年

4

Keycloak管理コンソールのWebサイトにログインし、レルムとそのクライアントを選択してから、クライアントのすべてのURIの前にプロトコルが付いていることを確認しますhttp://。例はhttp://localhost:8082/*

この問題を解決するもう1つの方法は、Keycloakサーバーコンソールの出力を表示し、リクエストが拒否されたことを示す行を見つけて、redirect_uri表示された値をコピー* Valid Redirect URIsし、Keycloak管理コンソールWebサイトのクライアントのフィールドに貼り付けることです。その場合、要求されたURIは許容範囲の1つです。


2

http://www.baeldung.com/spring-boot-keycloakで入手可能なSpringBootとKeycloakの例に従って、無効なパラメーター:redirect_uriの問題の問題に直面しました。キークロークサーバーからクライアントを追加するときは、キークロークサーバーがリダイレクトを実行できるように、そのクライアントのリダイレクトURIを提供する必要があります。同じエラーに何度も直面したとき、keycloakサーバーコンソールから正しいURLをコピーし、有効なリダイレクトURIスペースに提供したところ、正常に機能しました。


その方法を説明できますか
Subin Babu

2

私も同じ問題に直面しました。レルムの下の特定のクライアントにそれぞれ移動して、完全なURLの後にURL add *をリダイレクトすることで修正しました。

問題は解決されます

例: リダイレクトURI:http:localhost:3000 / myapp / generator / *


2

私は同じ問題に直面しました。レルムの下の特定のクライアントにそれぞれ移動して、完全なURLの後にURL add *をリダイレクトすることで修正しました。


2

/の場合、の値に末尾のスラッシュがありませんでしたValid Redirect URIs



1

前面の構成については、keycloak管理コンソールを確認する必要があります。リダイレクトURLとWebオリジンに対して誤って構成されている必要があります。


1

ログアウト後にkeycloakログインページにリダイレクトしようとしている場合(私がそうであったように)、これはデフォルトでは許可されていませんが、クライアントの管理コンソールの[有効なリダイレクトURI]設定で構成する必要もあります。


1

このエラーは、ユーザーがユーザー定義で委任された期待されるロールを持っていない場合にもスローされます(ドロップダウンでレルムのロールを設定します)。


0

コード(keycloak.init)のリダイレクトURIは、Keycloakサーバーで設定されたリダイレクトURIと同じである必要があります(クライアント->有効なUri) クリックして私のコードの画像を表示 キークロークの設定を表示するにはクリックしてください


0

使用しているクライアントのredirect_uriパラメーターの値がホワイトリストに登録されていることを確認してください。管理コンソールを介してクライアントの構成を管理できます。

リダイレクトURIは、ホワイトリストに登録されたリダイレクトURIの1つと完全に一致する必要があります。または、ホワイトリストに登録するURIの最後にワイルドカードを使用できます。参照:https//www.keycloak.org/docs/latest/server_admin/#_clients

ワイルドカードを使用してリダイレクトURIをホワイトリストに登録することは、Keycloakで許可されていますが、実際にはOpenIdConnect仕様に違反していることに注意してください。https://lists.jboss.org/pipermail/keycloak-dev/2018-December/011440.htmlでこれに関する議論を参照してください


0

レルム名に空白を入れると、この問題が発生する可能性があるようです。名前をに設定しましたがDebugging Realm、このエラーが発生しました。私がDebuggingRealmそれに変更したとき、それはうまくいきました。

表示名には空白を含めることができます。keycloakが管理者入力でこれをチェックしないのは奇妙なことです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.