2017-03-24 4 views
0

を公開私はAEM CQ 6日干しに取り組んでJavaアプリケーションからHttpPostを持つユーザを作成しています。 このコードは、罰金著者インスタンスのために働いてですが、それはインスタンスを公開作業ではありません。GETとPOSTは、AEM CQ6.2に取り組んでいないがインスタンス

JAVAコード

public static void createUser() throws IOException 
    { 

     CredentialsProvider credsProvider = new BasicCredentialsProvider(); 
     credsProvider.setCredentials(
       new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), 
       new UsernamePasswordCredentials("admin", "admin")); 
     CloseableHttpClient httpclient = HttpClients.custom() 
       .setDefaultCredentialsProvider(credsProvider) 
       .build(); 

     HttpPost httpPost = new HttpPost("http://localhost:4503/libs/granite/security/post/authorizables"); 
     List <NameValuePair> nvps = new ArrayList <NameValuePair>(); 
     nvps.add(new BasicNameValuePair("createUser", "")); 
     nvps.add(new BasicNameValuePair("authorizableId", "dd90")); 
     nvps.add(new BasicNameValuePair("rep:password", "dd90")); 
     nvps.add(new BasicNameValuePair("profile/email", "[email protected]")); 
     nvps.add(new BasicNameValuePair("intermediatePath", "/home/users/test/")); 
     httpPost.setEntity(new UrlEncodedFormEntity(nvps)); 
     CloseableHttpResponse response2 = httpclient.execute(httpPost); 

     try { 
      System.out.println(response2.getStatusLine()); 
      HttpEntity entity2 = response2.getEntity(); 
      System.out.println(EntityUtils.toString(response2.getEntity())); 
      // do something useful with the response body 
      // and ensure it is fully consumed 
      EntityUtils.consume(entity2); 
     } finally { 
      response2.close(); 
     } 
} 

私はCQのerror.logに

POST/libsに/御影石/セキュリティ/ポスト/ authorizables HTTP/1.1] com.adobeから下にエラーが発生します。 granite.security.user.internal.servlets.AuthorizableServlet AuthorizableServlet POSTの処理中にエラーが発生しました javax.jcr.AccessDeniedException:null at org.apache.jackrabbit.oak.util.NodeUtil.addChild(NodeUtil.java:113) at org.apache.jackrabbit.oak.util.NodeUtil.getOrAddTree(NodeUtil.java:171) at org.apache.jackrabbit.oak.security.user.UserProvider.createFolderNodes(UserProvider.java:306) at org。 (org.apache.jackrabbit.oak.security.user.UserProvider.createUser(UserProvider.java:185) ) (UserManagerImpl.java:162) at org.apache.jackrabbit.oak.jcr.delegate.UserManagerDelegator $ 9.perform(UserManagerDelegator.java:177) at org.apache.jackrabbit org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.performで.oak.jcr.delegate.UserManagerDelegator $ 9.perform(UserManagerDelegator.java:173) (SessionDeユーザ名: (SlingAllMethodsServlet。AuthorizableServlet.java:800) at com.adobe.granite.security.user.internal.servlets.AuthorizableServlet.doPost(AuthorizableServlet.java:707) at org.apache.sling.api.servlets.SlingAllMethodsServlet.mayService(SlingAllMethodsServlet。 Javaの:149) で org.apache.sling.api.servlets.SlingSafeMethodsServlet.serviceでorg.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:345) (SlingSafeMethodsServlet.java:376)でorg.apache.sling.engine.impl.request.RequestData.service(RequestData.java:546)ORGで (AbstractSlingFilterChain.java:77) at .cq.personalization.impl.TargetComponentFilter.doFilter(TargetComponentFilter.java:96) at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68) at com.day.cq.wcm .core.impl.WCMDebugFilter.doFilter(WCMDebugFilter.java:151) 、org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68) at com.day.cq.wcm.core com.day.cq.wcm.core.impl.WCMComponentFilter.doFilterで.impl.WCMComponentFilter.filterRootInclude(WCMComponentFilter.java:362) (WCMComponentFilt er.java:177)org.apache.sling.engine.impl.SlingRequestProcessorImpl.processComponentでorg.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68) (SlingRequestProcessorImpl.javaで : 282)org.apache.sling.engine.impl.filter.RequestSlingFilterChainで 。render(RequestSlingFilterChain.java:49) at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:77) at com.adobe.cq.social.ugcbase.security.impl.SaferSlingPostServlet。 doFilter(SaferSlingPostServlet.java:126) at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68) at com.day.cq.dam.core.impl.assetlinkshare.AdhocAssetShareAuthHandler。 doFilter(AdhocAssetShareAuthHandler.java:381) at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68) at com.day.cq.dam.core.impl.servlet.ActivityRecordHandler。 doFilter(ActivityRecordHandler.java:155) at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(Abstr (AbstractSlingFilterChain.java:73) at com.adobe.granite.requests.logging.impl.RequestLoggerImpl.doFilter(RequestLoggerImpl。 java:114) at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68) at com.adobe.granite.csrf.impl.CSRFFilter.doFilter(CSRFFilter.java:220) at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68) at org.apache.sling.security.impl.ContentDispositionFilter.doFilter(ContentDispositionFilter.java:181) at org。 (AbstractSlingFilterChain.java:68) (AbstractSlingFilterChain.java:68) at com .day.cq.wcm.core.impl.warp.TimeWarpFilter.doFilter(TimeWarpFilter.java:106) 、org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68) at com org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68)で.day.cq.wcm.mobile.core.impl.redirect.RedirectFilter.doFilter(RedirectFilter.java:248) org.apache.sling.i18n.impl.I18NFilter.doFilter(I18NFilter.java:129) at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilter org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChainでorg.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter.doFilter(RequestProgressTrackerLogFilter.java:95) でChain.java:68) 。 java:68) at com.day.cq.analytics.provisioning.impl.UserAuthenticationRequestFilter.doFilter(UserAuthenticationRequestFilter.java:119) at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java: 68) at com.adobe.cq.social.commons.cors.CORSAuthenticationFilter.doFilter(CORSAuthenticationFilter.java:91) at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68) at com.day.cq.wcm.foundation.forms.impl.FormsHandlingServlet.doFilter(FormsHa org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68) at com.adobe.granite.optout.impl.OptOutFilter.doFilter(OptOutFilter.java:285) で、 74) at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68) at com.day.cq.wcm.core.impl.WCMRequestFilter.doFilter(WCMRequestFilter.java:90) com.adobe.cq.mcm.campaign.servlets.CampaignCopyTracker.doFilter(CampaignCopyTracker.java:100) でorg.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68) ででorg.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68) at org.apache.sling。rewriter.impl.RewriterFilter.doFilter(RewriterFilter.java:83) at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68) at com.adobe.granite.httpcache.impl。 (InnerCacheFilter.java:77) at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(InnerCacheFilter.java:77) AbstractSlingFilterChain.java:68) at com.adobe.granite.rest.impl.servlet.ApiResourceFilter.doFilter(ApiResourceFilter.java:67) at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain。 java:68) at org.apache.sling.bgservlets.impl.BackgroundServletStarterFilter.doFilter(BackgroundServletStarterFilter.jav :com.adobe.granite.resourceresolverhelper.impl.ResourceResolverHelperImpl.doFilter(ResourceResolverHelperImpl.java:84)でorg.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68) における169) ORGでorg.apache.sling.engine.impl.SlingRequestProcessorImpl.doProcessRequest(SlingRequestProcessorImpl.java:151) でorg.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:68) で。 apache.sling.engine.impl.SlingMainServlet.service(SlingMainServlet.java:216) at org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:85) at org.apache。 felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:79) (FilterHandler.java:135) (org) .apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74) at org.apache.sling.security.impl.ReferrerFilter.doFilter(ReferrerFilter.java:290) at org.apache (InvocationChain.java:74) at com .adobe.granite.license.impl.LicenseCheckFilter.doFilter(LicenseCheckFilter.java:308) 、org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135) at org.apac (org.apache.felix.http.sslfilter.internal.SslFilter.doFilter(SslFilter.java:89) )。 at org。 apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135) at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74) at org.apache.sling.featureflags.impl.FeatureManager.doFilter(FeatureManager.java:116) at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135) at org。 apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74) 、org.apache.sling.engine.impl.log.RequestLoggerFilter.doFilter(RequestLoggerFilter.java:75) org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:135) at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:74) ) at org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:124) at org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.java:61) ) at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812) at org.eclipse.jetty.servlet.ServletHandler .doHandle(ServletHandler.java:587) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221) at org.eclipse.jetty.server.handler.ContextHandler。doHandle(ContextHandler.java:1127) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse。 (org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) at org.eclipse.jetty.server.Server)。ハンドル(Server.java:499) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311) at org.eclipse.jett org.eclipse.jetty.io.AbstractConnection $ 2.run(AbstractConnection.java:544) のy.server.HttpConnection.onFillable(HttpConnection.java:257) java.lang.Thread.run(Thread.java:745)でorg.eclipse.jetty.util.thread.QueuedThreadPool $ 3.run(QueuedThreadPool.java:555) で(QueuedThreadPool.java:635)

CURLコマンドも試してみましたが、作成者と発行者の両方にとってうまくいきました。

curl -u admin:admin -FcreateUser= -FauthorizableId=dd12 -Frep:password=testuser -Fprofile/[email protected] -Fprofile/age=32 -Fprofile/familyName=dd -Fprofile/givenName=dd -FintermediatePath="/home/users/test/" http://localhost:4503/libs/granite/security/post/authorizables 

残念ながら、このプロジェクトでは環境の制限があるため、CURLを使用できません。

上記のJavaコードを確実に使用できるので、公開インスタンスでGETとPOSTを有効にする設定がいくつかあると思われます。誰でも助けてくれますか?私は解決策を見つけてまだ苦労しているために3日を費やしました。 27/3/2017

に更新

私は、数行のコードを追加し、削除する必要が輸入java.util.Base64と、この問題が解決見つけました。

クレデンシャルを削除します。以下のhttpPost宣言を追加してください。

byte[] message = "admin:admin".getBytes(StandardCharsets.UTF_8); 
String encodedString = Base64.getEncoder().encodeToString(message); 
httpPost.setHeader("Authorization","Basic " + encodedString); 
+0

パブリッシャの実行モードがパブリッシュの場合、POSTは無効になります。このため、6.1以降のバージョンが必要です。通常の方法は、作成者にユーザーを作成し、それらを複製することです。これはあなたのケースに適していませんか? –

+0

あなたの返信ありがとう!はい、私の場合には適していません。パブリッシュインスタンスで作成する必要があります。とにかくそれを可能にする? – DEN

+0

それ以外の場合は、作成者が発行する複製プロセスを自動化する必要があります。複製を自動化するには、aem cqで行う必要がありますか? – DEN

答えて

2

(この質問の対象外のコミュニティを使用している場合を除き)、作成者にユーザーを作成してパブリッシャーにレプリケートすることをお勧めします。

curl -u admin:admin -X POST -F path="/home/users/test/testUser -F cmd="activate" http://localhost:4502/bin/replicate.json 

簡単に解決策があります:ユーザーが作成され

curl -u admin:admin -FcreateUser= -FauthorizableId=testuser -Frep:password=testuser -FintermediatePath="/home/users/test/" http://localhost:4502/libs/granite/security/post/authorizables 

たらあなたはそれが、次のcurlコマンドを使用して複製することができます。

はすでにカール経由著者でユーザーを作成する方法を知っていますパブリッシャーのセキュリティホールを開放するのではなく、

Javaソリューションの場合、異なるパスで上記と同じJavaコードを使用してレプリケーションコマンドをPOSTできます。

これが役に立ちます。

+0

ありがとう!それは働いている。同じ問題を抱えている人のために、このコメントのレプリケーションのJavaコードを追加してみましょう。 \t \tリスト nvps =新しいArrayList (); \t \t nvps.add(新しいBasicNameValuePair( "path"、 "/ home/users/test/Oa86yFZPXNWArzKvEth3")); \t \t nvps.add(新しいBasicNameValuePair( "cmd"、 "activate")); – DEN

+0

とにかく公開インスタンスにGET/POSTを有効にする方法は? – DEN

+0

より広範な答えを得るためにパブリッシャーで特にPOSTを有効にするための別のスレッドを開始してください。それが広すぎるのでコメントに収まるものではありません。この質問にリンクするには、ユースケースを使用します。 –

関連する問題