2016-09-08 2 views
2

私は史郎を新しくしました。私たちは城を暴風と一緒に使用しようとしています。私は、私がやりたいことに対する解決策を思いつくために例を解剖しようとしてきましたが、私は今まで成功していません。今のシロ/ストームパス/ REST

、私は単に私がやりたいRESTサービスを作成しようとしている、と私は、後に実際のクライアントを結ぶでしょう。これは私が私の最初のステップとして実現しようとしているものです:

私は、クライアントが自分のサーバー上でのRESTエンドポイント(ログイン)をヒットさせたいです。私のサーバーは認証され、JWTをクライアントに返します。このJWTを使用して、サーバー上の保護されたエンドポイントにアクセスします。 (Stormpathに対して正常に認証できるJavaコードを記述しています)。

私の問題はJWTです。私はJWTが私のために、あるいは少なくとも簡単にアクセスできるようになることを期待しました。私は1つを得る方法を見つけることができません。私はサンプルコードをどのように構築するかについて見てきましたが、それは私が1つを得ることを期待するようには見えません。

私はいくつかの例を介して実行しているが、ほとんどはJSPインタフェースに対処するように見える、と私は私が何をしようとしているに飛躍を作るように見えることはできません。

このアプローチは妥当ですか?どんな指導も高く評価されます。

編集1

私は今、史郎サーブレットを使用して認証し、JWTを取得することができますJavaクライアントを持っています。 GlassFishでデプロイされたアプリケーション(war)として実行しています。私の次のステップは、そのJWTを使用して、自分のRESTエンドポイントを持つ異なるアプリケーションに対して認証することです。このRESTアプリケーションでは、認証方法について何も知る必要はありません。特定のRESTエンドポイントへの呼び出しでJWTを渡し、Shiro(注釈を使用)を使用してエンドポイントへのアクセスを制御したいだけです)。私が見つけることができるすべての例は、 "オールインワン"の例(Shiro/Stormpath設定などのJSPをバンドルする)のようです。私はRESTエンドポイントを確保するための最小作業構成を決定しようとしており、必要な構成のどれかを判断するのが難しいです。

編集2

私は認証バックエンドとして(史郎サーブレットの例から盗まれたとして)Stormpath-史郎・サーブレットを使用しています。 Javaクライアントを使用して、サーブレットにログイン要求を送信しています.JWTを実際に取得しています。しかし、私はJWTを使って他の残りの資源にアクセスすることはできません。私の残りの部分は、このエラーで結果を呼び出します。

org.apache.shiro.authz.UnauthenticatedException: This subject is anonymous - it does not have any identifying principals and authorization operations require an identity to check against. A Subject instance will acquire these identifying principals automatically after a successful login is performed be executing org.apache.shiro.subject.Subject.login(AuthenticationToken) or when 'Remember Me' functionality is enabled by the SecurityManager. This exception can also occur when a previously logged-in Subject has logged out which makes it anonymous again. Because an identity is currently not known due to any of these conditions, authorization is denied.

まずサーブレットのログイン」は、実際に私にログインし、私に非匿名原理を与えるものではありません、なぜ、私は理解していませんか?第二に、私は別のクライアントですべてをやろうとしているので、Subject.loginにアクセスできません(これは正しい仮定ですか?)。

+0

あなたのリクエストはどのように見えますか?あなたはそれを捕獲してここに掲示することができますか(必要な時に検閲?) –

+0

もう一度立ち往生しました。私は/ loginと/ oath/tokenの両方でサーブレットを打っています。応答が返ってきて、StormpathアカウントのURIが正しいという意味では問題はありません。私は、アカウントURIがStormpathサーバーから返されている必要があるため、これは自分の構成が正しいことを意味していると仮定しています。しかし、私はグループや主張を見ません。私はJWTデバッガとJWTアナライザとインスペクタでJWTを検査しました。それが要素の場合、 'stormpath.web.oauth2.authorizer.secure.resolver = com.stormpath.sdk.servlet.config.SecureResolverFactory'が設定されています。 –

答えて

2

は、JWTの作成がStormpath APIによって自動的に管理されてgithub/stormpath-shiro

からthis exampleを見てみましょう。上記のサーブレットの1つ、またはspring-boot-webの例の1つを起動すると、ログイン後にJWTクッキーが作成されます。背景情報はthis blog postです。

私はstrompath-shiroをリリースしようとしていますが、ここにこれらのリンクを含めると思っています。

+0

私は両方見たことがあります。ブログの投稿は、私が自分自身の「JWT」ソリューションをロールバックしなければならないと考えた理由の1つでした。この例に関して、私は成功することなくそれを働かそうとしています。 java.lang.IllegalStateExceptionが発生しました:アプリケーションの構成にstormpath.application.hrefプロパティが定義されていません。 '環境変数を設定し、Maven/Jettyで変数を設定し、stormpath.propertiesファイルを追加しようとしましたが、成功しませんでした。 –

+0

多くのデバッグの後、私は、サンプルアプリケーションを動作させる唯一の方法が、デフォルトの "Stormpath"アプリケーション以外のStormpathに1つのアプリケーションしか持たないことを発見しました。 –

+0

@ ben_979これはバグかもしれません。アプリケーション 'href'を指定すると、多くのアプリケーションの中から1つのアプリケーションを選択することができます。 github/stormpath-shiroで報告できますか? –