Hi Thomas, When you calling the token endpoint using saml response, could you please add the scope=default parameter as well in the request. For ex :[1]. Let us know it if works. (Just want to verify , because scope is an optional parameter. )
[1] - curl -X POST -u "QlthIzYUOK5DS0BXW8Cy8uFJjKAa:XFfgPmTbMaQ5eScc0rSnAW9ZIgwa" -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" -d " *scope=deafult*&grant_type=urn:ietf:params:oauth:grant-type:saml2-bearer&assertion=nrkelgerte..............ufw" https://{host}:{port}/oauth2/token Thanks! Rajith On Fri, Jun 16, 2017 at 1:46 PM, Thomas LEGRAND < thomas.legr...@versusmind.eu> wrote: > Hello, > > Thank you for your answers. > > I activated the DEBUG mode on the IS in the class org.wso2.carbon.apimgt. > keymgt.service.APIKeyValidationService and I can see that the IS receives > something because when I send a wrong OAuth token, its says > > [2017-06-16 12:10:00,563] ERROR > {org.wso2.carbon.apimgt.impl.AMDefaultKeyManagerImpl} > - Invalid OAuth Token : Invalid accessken > > And when I send a right one: > > [2017-06-16 14:19:52,028] DEBUG > {org.wso2.carbon.apimgt.keymgt.service.APIKeyValidationService} > - OAuth token response from Manager to gateway: , appName=myApp , > userName=myUser@carbon.super , transactionId= , > consumerKey=5bWQioSHWbt9I24xizeP0o20a > , isAuthorized=true , responseTime=Fri Jun 16 14:19:52 CEST 2017 > [2017-06-16 14:19:52,028] DEBUG > {org.wso2.carbon.apimgt.keymgt.service.APIKeyValidationService} > - APIKeyValidationInfoDTO bee returning : APIKeyValidationInfoDTO = { > authorized:true , subscriber:admin , tier:Unlimited , type:PRODUCTION , > userType:APPLICATION_USER , endUserToken:null , > endUserName:myUser@carbon.super > , applicationId:3 , applicationName:myApp , applicationr:Unlimited , > validationStatus:0 , validityPeriod:2009000 , issuedTime:1497615592019 , > apiName:MyAPI , consumerKey:5bWQioSH9I24xizeP0oxTw20a , > spikeArrestLimit:0 , spikeArrestUnit:null , > subscriberTenantDomain:carbon.super > , stopOnQuotaReach:true ,iPublisher:admin]] > > We can see the authorized: true (if that means something) so it is like > the API manager don't know how to interpret this message and take a > shortcut to conclusion because of an Axis error. So from here, I don't know > what to do :( > > Regards, > > Thomas > > > > 2017-06-16 13:13 GMT+02:00 Farasath Ahamed <farasa...@wso2.com>: > >> >> >> >> >> On Fri, Jun 16, 2017 at 4:37 PM, Rajith Roshan <raji...@wso2.com> wrote: >> >>> Hi Thomas, >>> >>> You need to subscribe to that particular api from the application you >>> have generated access token. if there is no valid subscription then this >>> error can happen. >>> And also if you have assigned specif scopes to api resource , then the >>> access token should also have that scopes when it was generated. >>> This resource forbidden issue can occur due to above mentioned errors. >>> >> >> In those cases shouldn't the error codes be different according to [1]. >> >> >> <ams:fault xmlns:ams="http://wso2.org/apimanager/security"> >> <ams:code>900900</ams:code> >> <ams:message>Unclassified Authentication Failure</ams:message> >> <ams:description>Resource forbidden</ams:description> >> </ams:fault> >> >> Error code 900900. according [1] says that, >> Backend service for key validation is not accessible when trying to >> invoke an API >> >> >> >> >> [1] https://docs.wso2.com/display/AM210/Error+Handling >> >> >>> >>> Thanks! >>> Rajith >>> >>> On Fri, Jun 16, 2017 at 12:32 PM, Thomas LEGRAND < >>> thomas.legr...@versusmind.eu> wrote: >>> >>>> Hello ! >>>> >>>> Sure. Here is my api-manager.xml AM configuration file: >>>> >>>> <APIManager> >>>> <!-- JNDI name of the data source to be used by the API publisher, >>>> API store and API >>>> key manager. This data source should be defined in the >>>> master-datasources.xml file >>>> in conf/datasources directory. --> >>>> <DataSourceName>jdbc/WSO2AM_DB</DataSourceName> >>>> >>>> <!-- This parameter is used when adding api management capability >>>> to other products like GReg, AS, DSS etc.--> >>>> <!--GatewayType>Synapse</GatewayType--> >>>> <GatewayType>None</GatewayType> >>>> >>>> <!-- This parameter is used to enable the securevault support when >>>> try to publish endpoint secured APIs. Values should be "true" or "false". >>>> By default secure vault is disabled.--> >>>> <EnableSecureVault>false</EnableSecureVault> >>>> >>>> <!-- Authentication manager configuration for API publisher and API >>>> store. This is >>>> a required configuration for both web applications as their >>>> user authentication >>>> logic relies on this. --> >>>> <AuthManager> >>>> <!-- Server URL of the Authentication service --> >>>> <!--ServerURL>https://localhost:${mgt.transport.https.port}$ >>>> {carbon.context}services/</ServerURL--> >>>> <ServerURL>https://localhost:9448/services/</ServerURL> >>>> <!-- Admin username for the Authentication manager. --> >>>> <Username>${admin.username}</Username> >>>> <!-- Admin password for the Authentication manager. --> >>>> <Password>${admin.password}</Password> >>>> <!-- Indicates whether the permissions checking of the user (on >>>> the Publisher and Store) should be done >>>> via a remote service. The check will be done on the local >>>> server when false. --> >>>> <CheckPermissionsRemotely>false</CheckPermissionsRemotely> >>>> </AuthManager> >>>> >>>> <JWTConfiguration> >>>> <!-- Enable/Disable JWT generation. Default is false. --> >>>> <!-- EnableJWTGeneration>false</EnableJWTGeneration--> >>>> >>>> <!-- Name of the security context header to be added to the >>>> validated requests. --> >>>> <JWTHeader>X-JWT-Assertion</JWTHeader> >>>> >>>> <!-- Fully qualified name of the class that will retrieve >>>> additional user claims >>>> to be appended to the JWT. If not specified no claims will >>>> be appended.If user wants to add all user claims in the >>>> jwt token, he needs to enable this parameter. >>>> The DefaultClaimsRetriever class adds user claims from the >>>> default carbon user store. --> >>>> <!--ClaimsRetrieverImplClass>org.wso2.carbon.apimgt.impl.tok >>>> en.DefaultClaimsRetriever</ClaimsRetrieverImplClass--> >>>> >>>> <!-- The dialectURI under which the claimURIs that need to be >>>> appended to the >>>> JWT are defined. Not used with custom ClaimsRetriever >>>> implementations. The >>>> same value is used in the keys for appending the default >>>> properties to the >>>> JWT. --> >>>> <!--ConsumerDialectURI>http://wso2.org/claims</ConsumerDiale >>>> ctURI--> >>>> >>>> <!-- Signature algorithm. Accepts "SHA256withRSA" or "NONE". To >>>> disable signing explicitly specify "NONE". --> >>>> <!--SignatureAlgorithm>SHA256withRSA</SignatureAlgorithm--> >>>> >>>> <!-- This parameter specifies which implementation should be >>>> used for generating the Token. JWTGenerator is the >>>> default implementation provided. --> >>>> <JWTGeneratorImpl>org.wso2.carbon.apimgt.keymgt.token.JWTGen >>>> erator</JWTGeneratorImpl> >>>> >>>> <!-- This parameter specifies which implementation should be >>>> used for generating the Token. For URL safe JWT >>>> Token generation the implementation is provided in >>>> URLSafeJWTGenerator --> >>>> <!--<JWTGeneratorImpl>org.wso2.carbon.apimgt.keymgt.token.UR >>>> LSafeJWTGenerator</JWTGeneratorImpl>--> >>>> >>>> <!-- Remove UserName from JWT Token --> >>>> <!-- <RemoveUserNameFromJWTForAppli >>>> cationToken>true</RemoveUserNameFromJWTForApplicationToken>--> >>>> </JWTConfiguration> >>>> >>>> <!-- Primary/secondary login configuration for APIstore. If user >>>> likes to keep two login attributes in a distributed setup, to login the >>>> APIstore, >>>> he should configure this section. Primary login doesn't have a claimUri >>>> associated with it. But secondary login, which is a claim attribute, >>>> is associated with a claimuri.--> >>>> <!--LoginConfig> >>>> <UserIdLogin primary="true"> >>>> <ClaimUri></ClaimUri> >>>> </UserIdLogin> >>>> <EmailLogin primary="false"> >>>> <ClaimUri>http://wso2.org/claims/emailaddress</ClaimUri> >>>> </EmailLogin> >>>> </LoginConfig--> >>>> >>>> <!-- Credentials for the API gateway admin server. This >>>> configuration >>>> is mainly used by the API publisher and store to connect to >>>> the API gateway and >>>> create/update published API configurations. --> >>>> <APIGateway> >>>> <!-- The environments to which an API will be published --> >>>> <Environments> >>>> <!-- Environments can be of different types. Allowed values >>>> are 'hybrid', 'production' and 'sandbox'. >>>> An API deployed on a 'production' type gateway will >>>> only support production keys >>>> An API deployed on a 'sandbox' type gateway will only >>>> support sandbox keys >>>> An API deployed on a 'hybrid' type gateway will >>>> support both production and sandbox keys. --> >>>> <!-- api-console element specifies whether the environment >>>> should be listed in API Console or not --> >>>> <Environment type="hybrid" api-console="true"> >>>> <Name>Production and Sandbox</Name> >>>> <Description>This is a hybrid gateway that handles both >>>> production and sandbox token traffic.</Description> >>>> <!-- Server URL of the API gateway --> >>>> <ServerURL>https://localhost:$ >>>> {mgt.transport.https.port}${carbon.context}services/</ServerURL> >>>> <!-- Admin username for the API gateway. --> >>>> <Username>${admin.username}</Username> >>>> <!-- Admin password for the API gateway.--> >>>> <Password>${admin.password}</Password> >>>> <!-- Endpoint URLs for the APIs hosted in this API >>>> gateway.--> >>>> <GatewayEndpoint>http://${carb >>>> on.local.ip}:${http.nio.port},https://${carbon.local.ip}:${h >>>> ttps.nio.port}</GatewayEndpoint> >>>> </Environment> >>>> </Environments> >>>> </APIGateway> >>>> >>>> <CacheConfigurations> >>>> <!-- Enable/Disable token caching at the Gateway--> >>>> <EnableGatewayTokenCache>true</EnableGatewayTokenCache> >>>> <!-- Enable/Disable API resource caching at the Gateway--> >>>> <EnableGatewayResourceCache>true</EnableGatewayResourceCache> >>>> <!-- Enable/Disable API key validation information caching at >>>> key-management server --> >>>> <EnableKeyManagerTokenCache>false</EnableKeyManagerTokenCache> >>>> <!-- This parameter specifies whether Recently Added APIs will >>>> be loaded from the cache or not. >>>> If there are multiple API modification during a short time >>>> period, better to disable cache. --> >>>> <EnableRecentlyAddedAPICache>false</EnableRecentlyAddedAPICa >>>> che> >>>> <!-- JWT claims Cache expiry in seconds --> >>>> <!--JWTClaimCacheExpiry>900</JWTClaimCacheExpiry--> >>>> <!-- Expiry time for the apim key mgt validation info cache --> >>>> <!--TokenCacheExpiry>900</TokenCacheExpiry--> >>>> <!-- This parameter specifies the expiration time of the >>>> TagCache. TagCache will >>>> only be created when this element is uncommented. When the >>>> specified >>>> time duration gets elapsed ,tag cache will get >>>> re-generated. --> >>>> <!--TagCacheDuration>120000</TagCacheDuration--> >>>> </CacheConfigurations> >>>> >>>> <!-- >>>> API usage tracker configuration used by the DAS data publisher >>>> and >>>> Google Analytics publisher in API gateway. >>>> --> >>>> <Analytics> >>>> <!-- Enable Analytics for API Manager --> >>>> <Enabled>false</Enabled> >>>> >>>> <!-- Server URL of the remote DAS/CEP server used to collect >>>> statistics. Must >>>> be specified in protocol://hostname:port/ format. >>>> >>>> An event can also be published to multiple Receiver Groups >>>> each having 1 or more receivers. Receiver >>>> Groups are delimited by curly braces whereas receivers are >>>> delimited by commas. >>>> Ex - Multiple Receivers within a single group >>>> tcp://localhost:7612/,tcp://l >>>> ocalhost:7613/,tcp://localhost:7614/ >>>> >>>> Ex - Multiple Receiver Groups with two receivers each >>>> {tcp://localhost:7612/,tcp:// >>>> localhost:7613},{tcp://localhost:7712/,tcp://localhost:7713/} --> >>>> <DASServerURL>{tcp://localhost:7612}</DASServerURL> >>>> <!--DASAuthServerURL>{ssl://localhost:7712}</DASAuthServerUR >>>> L--> >>>> <!-- Administrator username to login to the remote DAS server. >>>> --> >>>> <DASUsername>${admin.username}</DASUsername> >>>> <!-- Administrator password to login to the remote DAS server. >>>> --> >>>> <DASPassword>${admin.password}</DASPassword> >>>> >>>> <!-- For APIM implemented Statistic client for RDBMS --> >>>> <StatsProviderImpl>org.wso2.carbon.apimgt.usage.client.impl. >>>> APIUsageStatisticsRdbmsClientImpl</StatsProviderImpl> >>>> >>>> <!-- DAS REST API configuration --> >>>> <DASRestApiURL>https://localhost:9444</DASRestApiURL> >>>> <DASRestApiUsername>${admin.username}</DASRestApiUsername> >>>> <DASRestApiPassword>${admin.password}</DASRestApiPassword> >>>> >>>> <!-- Below property is used to skip trying to connect to event >>>> receiver nodes when publishing events even if >>>> the stats enabled flag is set to true. --> >>>> <SkipEventReceiverConnection>false</SkipEventReceiverConnect >>>> ion> >>>> >>>> <!-- API Usage Data Publisher. --> >>>> <PublisherClass>org.wso2.carbon.apimgt.usage.publisher.APIMg >>>> tUsageDataBridgeDataPublisher</PublisherClass> >>>> >>>> <!-- If below property set to true,then the response message >>>> size will be calculated and publish >>>> with each successful API invocation event. --> >>>> <PublishResponseMessageSize>false</PublishResponseMessageSize> >>>> <!-- Data publishing stream names and versions of API requests, >>>> responses and faults. If the default values >>>> are changed, the toolbox also needs to be changed >>>> accordingly. --> >>>> <Streams> >>>> <Request> >>>> <Name>org.wso2.apimgt.statistics.request</Name> >>>> <Version>1.1.0</Version> >>>> </Request> >>>> <Response> >>>> <Name>org.wso2.apimgt.statistics.response</Name> >>>> <Version>1.1.0</Version> >>>> </Response> >>>> <Fault> >>>> <Name>org.wso2.apimgt.statistics.fault</Name> >>>> <Version>1.0.0</Version> >>>> </Fault> >>>> <Throttle> >>>> <Name>org.wso2.apimgt.statistics.throttle</Name> >>>> <Version>1.0.0</Version> >>>> </Throttle> >>>> <Workflow> >>>> <Name>org.wso2.apimgt.statistics.workflow</Name> >>>> <Version>1.0.0</Version> >>>> </Workflow> >>>> <ExecutionTime> >>>> <Name>org.wso2.apimgt.statistics.execution.time</Name> >>>> <Version>1.0.0</Version> >>>> </ExecutionTime> >>>> <AlertTypes> >>>> <Name>org.wso2.analytics.apim. >>>> alertStakeholderInfo</Name> >>>> <Version>1.0.0</Version> >>>> </AlertTypes> >>>> </Streams> >>>> >>>> </Analytics> >>>> >>>> <!-- >>>> API key validator configuration used by API key manager (IS), >>>> API store and API gateway. >>>> API gateway uses it to validate and authenticate users against >>>> the provided API keys. >>>> --> >>>> <APIKeyValidator> >>>> <!-- Server URL of the API key manager --> >>>> <!--ServerURL>https://localhost:${mgt.transport.https.port}$ >>>> {carbon.context}services/</ServerURL--> >>>> <ServerURL>https://localhost:9448/services/</ServerURL> >>>> >>>> <!-- Admin username for API key manager. --> >>>> <Username>${admin.username}</Username> >>>> <!-- Admin password for API key manager. --> >>>> <Password>${admin.password}</Password> >>>> <!--Username>admin</Username> >>>> <Password>admin</Password--> >>>> >>>> <!-- Configurations related to enable thrift support for >>>> key-management related communication. >>>> If you want to switch back to Web Service Client, change >>>> the value of "KeyValidatorClientType" to "WSClient". >>>> In a distributed environment; >>>> -If you are at the Gateway node, you need to point >>>> "ThriftClientPort" value to the "ThriftServerPort" value given at >>>> KeyManager node. >>>> -If you need to start two API Manager instances in the >>>> same machine, you need to give different ports to "ThriftServerPort" value >>>> in two nodes. >>>> -ThriftServerHost - Allows to configure a hostname for the >>>> thrift server. It uses the carbon hostname by default. >>>> -The Gateway uses this parameter to connect to the key >>>> validation thrift service. --> >>>> <KeyValidatorClientType>WSClient</KeyValidatorClientType> >>>> <ThriftClientConnectionTimeOut>10000</ThriftClientConnection >>>> TimeOut> >>>> <!--ThriftClientPort>10397</ThriftClientPort--> >>>> >>>> <EnableThriftServer>false</EnableThriftServer> >>>> <ThriftServerHost>localhost</ThriftServerHost> >>>> <!--ThriftServerPort>10397</ThriftServerPort--> >>>> >>>> <!--ConnectionPool> >>>> <MaxIdle>100</MaxIdle> >>>> <InitIdleCapacity>50</InitIdleCapacity> >>>> </ConnectionPool--> >>>> <!-- Specifies the implementation to be used for >>>> KeyValidationHandler. Steps for validating a token can be controlled by >>>> plugging in a >>>> custom KeyValidation Handler --> >>>> <KeyValidationHandlerClassName>org.wso2.carbon.apimgt.keymgt >>>> .handlers.DefaultKeyValidationHandler</KeyValidationHandlerClassName> >>>> </APIKeyValidator> >>>> >>>> <!-- Uncomment this section only if you are going to have an >>>> instance other than KeyValidator as your KeyManager. >>>> Unless a ThirdParty KeyManager is used, you don't need to >>>> configure this section. --> >>>> <!--APIKeyManager> >>>> <KeyManagerClientImpl>org.wso2.carbon.apimgt.impl.AMDefaultK >>>> eyManagerImpl</KeyManagerClientImpl> >>>> <Configuration> >>>> <ServerURL>https://localhost:$ >>>> {mgt.transport.https.port}${carbon.context}services/</ServerURL> >>>> <Username>${admin.username}</Username> >>>> <Password>${admin.password}</Password> >>>> <TokenURL>https://${carbon.loc >>>> al.ip}:${https.nio.port}/token</TokenURL> >>>> <RevokeURL>https://${carbon.lo >>>> cal.ip}:${https.nio.port}/revoke</RevokeURL> >>>> </Configuration> >>>> </APIKeyManager--> >>>> >>>> <OAuthConfigurations> >>>> <!-- Remove OAuth headers from outgoing message. --> >>>> <!--RemoveOAuthHeadersFromOutMessage>true</RemoveOAuthHeader >>>> sFromOutMessage--> >>>> <!-- Scope used for marking Application Tokens. If a token is >>>> generated with this scope, they will be treated as Application Access >>>> Tokens --> >>>> <ApplicationTokenScope>am_application_scope</ApplicationToke >>>> nScope> >>>> <!-- All scopes under the ScopeWhitelist element are not >>>> validating against roles that has assigned to it. >>>> By default ^device_.* and openid scopes have been white >>>> listed internally. --> >>>> <!--ScopeWhitelist> >>>> <Scope>^device_.*</Scope> >>>> <Scope>openid</Scope> >>>> </ScopeWhitelist--> >>>> <!-- Name of the token API --> >>>> <TokenEndPointName>/oauth2/token</TokenEndPointName> >>>> <!-- This the API URL for revoke API. When we revoke tokens >>>> revoke requests should go through this >>>> API deployed in API gateway. Then it will do cache >>>> invalidations related to revoked tokens. >>>> In distributed deployment we should configure this >>>> property in key manager node by pointing >>>> gateway https( /http, we recommend users to use 'https' >>>> endpoints for security purpose) url. >>>> Also please note that we should point gateway revoke >>>> service to key manager --> >>>> <RevokeAPIURL>https://localhost:${https.nio.port}/revoke</Re >>>> vokeAPIURL> >>>> <!-- Whether to encrypt tokens when storing in the Database >>>> Note: If changing this value to true, change the value of >>>> <TokenPersistenceProcessor> to >>>> >>>> org.wso2.carbon.identity.oauth.tokenprocessor.EncryptionDecryptionPersistenceProcessor >>>> in the identity.xml --> >>>> <EncryptPersistedTokens>false</EncryptPersistedTokens> >>>> </OAuthConfigurations> >>>> >>>> <!-- Settings related to managing API access tiers. --> >>>> <TierManagement> >>>> <!-- Enable the providers to expose their APIs over the special >>>> 'Unlimited' tier which >>>> basically disables tier based throttling for the specified >>>> APIs. --> >>>> <EnableUnlimitedTier>true</EnableUnlimitedTier> >>>> </TierManagement> >>>> >>>> <!-- API Store Related Configurations --> >>>> <APIStore> >>>> <!--GroupingExtractor>org.wso2.carbon.apimgt.impl.DefaultGro >>>> upIDExtractorImpl</GroupingExtractor--> >>>> <!--This property is used to indicate how we do user name >>>> comparision for token generation https://wso2.org/jira/browse/A >>>> PIMANAGER-2225--> >>>> <CompareCaseInsensitively>true</CompareCaseInsensitively> >>>> <DisplayURL>false</DisplayURL> >>>> <URL>https://localhost:${mgt.transport.https.port}/store</URL> >>>> >>>> <!-- Server URL of the API Store. --> >>>> <ServerURL>https://localhost:${mgt.transport.https.port}${ca >>>> rbon.context}services/</ServerURL> >>>> <!-- Admin username for API Store. --> >>>> <Username>${admin.username}</Username> >>>> >>>> <!-- Admin password for API Store. --> >>>> <Password>${admin.password}</Password> >>>> <!-- This parameter specifies whether to display multiple >>>> versions of same >>>> API or only showing the latest version of an API. --> >>>> <DisplayMultipleVersions>false</DisplayMultipleVersions> >>>> <!-- This parameter specifies whether to display all the APIs >>>> [which are having DEPRECATED/PUBLISHED status] or only >>>> display the APIs >>>> with having their status is as 'PUBLISHED' --> >>>> <DisplayAllAPIs>false</DisplayAllAPIs> >>>> <!-- Uncomment this to limit the number of APIs in api the API >>>> Store --> >>>> <!--APIsPerPage>5</APIsPerPage--> >>>> >>>> <!-- This parameter specifies whether to display the comment >>>> editing facility or not. >>>> Default is "true". If user wants to disable, he must set >>>> this param as "false" --> >>>> <DisplayComments>true</DisplayComments> >>>> >>>> <!-- This parameter specifies whether to display the ratings >>>> or not. >>>> Default is "true". If user wants to disable, he must set >>>> this param as "false" --> >>>> <DisplayRatings>true</DisplayRatings> >>>> >>>> <!--set isStoreForumEnabled to false for disable forum in >>>> store--> >>>> <!--isStoreForumEnabled>false</isStoreForumEnabled--> >>>> </APIStore> >>>> >>>> <APIPublisher> >>>> <DisplayURL>false</DisplayURL> >>>> <URL>https://localhost:${mgt.transport.https.port}/publisher >>>> </URL> >>>> <!-- This parameter specifies enabling the capability of >>>> setting API documentation level granular visibility levels. >>>> By default any document associate with an API will have >>>> the same permissions set as the API.With enabling below >>>> property,it will show two additional permission levels as >>>> visible only to all registered users in a particular >>>> domain or only visible to API doc creator --> >>>> <!--EnableAPIDocVisibilityLevels>true</EnableAPIDocVisibilit >>>> yLevels--> >>>> <!-- Uncomment this to limit the number of APIs in api the API >>>> Publisher --> >>>> <!--APIsPerPage>30</APIsPerPage--> >>>> </APIPublisher> >>>> >>>> <!-- Status observers can be registered against the API Publisher >>>> to listen for >>>> API status update events. Each observer must implement the >>>> APIStatusObserver >>>> interface. Multiple observers can be engaged if necessary and >>>> in such situations >>>> they will be notified in the order they are defined here. >>>> This configuration is unused from API Manager version 1.10.0 >>>> --> >>>> <!--StatusObservers> >>>> <Observer>org.wso2.carbon.apimgt.impl.observers.SimpleLoggin >>>> gObserver</Observer> >>>> </StatusObservers--> >>>> >>>> <!-- Use this configuration Create APIs at the Server startup --> >>>> <StartupAPIPublisher> >>>> <!-- Enable/Disable the API Startup Publisher --> >>>> <Enabled>false</Enabled> >>>> >>>> <!-- Configuration to create APIs for local endpoints. >>>> Endpoint will be computed as http:// >>>> ${carbon.local.ip}:${mgt.transport.http.port}/Context. >>>> Define many LocalAPI elements as below to create many APIs >>>> for local Endpoints. >>>> IconPath should be relative to CARBON_HOME. --> >>>> <LocalAPIs> >>>> <LocalAPI> >>>> <Context>/resource</Context> >>>> <Provider>admin</Provider> >>>> <Version>1.0.0</Version> >>>> <IconPath>none</IconPath> >>>> <DocumentURL>none</DocumentURL> >>>> <AuthType>Any</AuthType> >>>> </LocalAPI> >>>> </LocalAPIs> >>>> >>>> <!-- Configuration to create APIs for remote endpoints. >>>> When Endpoint need to be defined use this configuration. >>>> Define many API elements as below to create many APIs >>>> for external Endpoints. >>>> If you do not need to add Icon or Documentation set >>>> 'none' as the value for IconPath & DocumentURL. --> >>>> <!--APIs> >>>> <API> >>>> <Context>/resource</Context> >>>> <Endpoint>http://localhost:9764/resource</Endpoint> >>>> <Provider>admin</Provider> >>>> <Version>1.0.0</Version> >>>> <IconPath>none</IconPath> >>>> <DocumentURL>none</DocumentURL> >>>> <AuthType>Any</AuthType> >>>> </API> >>>> </APIs--> >>>> </StartupAPIPublisher> >>>> >>>> <!-- Configuration to enable/disable sending CORS headers in the >>>> Gateway response >>>> and define the Access-Control-Allow-Origin header value.--> >>>> <CORSConfiguration> >>>> <!-- Configuration to enable/disable sending CORS headers from >>>> the Gateway--> >>>> <Enabled>true</Enabled> >>>> >>>> <!-- The value of the Access-Control-Allow-Origin header. >>>> Default values are >>>> API Store addresses, which is needed for swagger to >>>> function. --> >>>> <Access-Control-Allow-Origin>*</Access-Control-Allow-Origin> >>>> >>>> <!-- Configure Access-Control-Allow-Methods --> >>>> <Access-Control-Allow-Methods>GET,PUT,POST,DELETE,PATCH,OPTI >>>> ONS</Access-Control-Allow-Methods> >>>> >>>> <!-- Configure Access-Control-Allow-Headers --> >>>> <Access-Control-Allow-Headers>authorization,Access-Control-A >>>> llow-Origin,Content-Type,SOAPAction</Access-Control-Allow-Headers> >>>> >>>> <!-- Configure Access-Control-Allow-Credentials --> >>>> <!-- Specifying this header to true means that the server >>>> allows cookies (or other user credentials) to be included on cross-origin >>>> requests. >>>> It is false by default and if you set it to true then make >>>> sure that the Access-Control-Allow-Origin header does not contain the >>>> wildcard (*) --> >>>> <Access-Control-Allow-Credentials>false</Access-Control-Allo >>>> w-Credentials> >>>> </CORSConfiguration> >>>> >>>> <!-- This property is there to configure velocity log output into >>>> existing Log4j carbon Logger. >>>> You can enable this and set preferable Logger name. --> >>>> <!-- VelocityLogger>VELOCITY</VelocityLogger --> >>>> >>>> <RESTAPI> >>>> <!--Configure white-listed URIs of REST API. Accessing >>>> white-listed URIs does not require credentials (does not require >>>> Authorization header). --> >>>> <WhiteListedURIs> >>>> <WhiteListedURI> >>>> <URI>/api/am/publisher/{version}/swagger.json</URI> >>>> <HTTPMethods>GET,HEAD</HTTPMethods> >>>> </WhiteListedURI> >>>> <WhiteListedURI> >>>> <URI>/api/am/store/{version}/swagger.json</URI> >>>> <HTTPMethods>GET,HEAD</HTTPMethods> >>>> </WhiteListedURI> >>>> <WhiteListedURI> >>>> <URI>/api/am/admin/{version}/swagger.json</URI> >>>> <HTTPMethods>GET,HEAD</HTTPMethods> >>>> </WhiteListedURI> >>>> <WhiteListedURI> >>>> <URI>/api/am/store/{version}/apis</URI> >>>> <HTTPMethods>GET,HEAD</HTTPMethods> >>>> </WhiteListedURI> >>>> <WhiteListedURI> >>>> <URI>/api/am/store/{version}/apis/{apiId}</URI> >>>> <HTTPMethods>GET,HEAD</HTTPMethods> >>>> </WhiteListedURI> >>>> <WhiteListedURI> >>>> <URI>/api/am/store/{version}/apis/{apiId}/swagger</URI> >>>> <HTTPMethods>GET,HEAD</HTTPMethods> >>>> </WhiteListedURI> >>>> <WhiteListedURI> >>>> <URI>/api/am/store/{version}/a >>>> pis/{apiId}/documents</URI> >>>> <HTTPMethods>GET,HEAD</HTTPMethods> >>>> </WhiteListedURI> >>>> <WhiteListedURI> >>>> <URI>/api/am/store/{version}/a >>>> pis/{apiId}/documents/{documentId}</URI> >>>> <HTTPMethods>GET,HEAD</HTTPMethods> >>>> </WhiteListedURI> >>>> <WhiteListedURI> >>>> <URI>/api/am/store/{version}/a >>>> pis/{apiId}/documents/{documentId}/content</URI> >>>> <HTTPMethods>GET,HEAD</HTTPMethods> >>>> </WhiteListedURI> >>>> <WhiteListedURI> >>>> <URI>/api/am/store/{version}/a >>>> pis/{apiId}/thumbnail</URI> >>>> <HTTPMethods>GET,HEAD</HTTPMethods> >>>> </WhiteListedURI> >>>> <WhiteListedURI> >>>> <URI>/api/am/store/{version}/tags</URI> >>>> <HTTPMethods>GET,HEAD</HTTPMethods> >>>> </WhiteListedURI> >>>> <WhiteListedURI> >>>> <URI>/api/am/store/{version}/tiers/{tierLevel}</URI> >>>> <HTTPMethods>GET,HEAD</HTTPMethods> >>>> </WhiteListedURI> >>>> <WhiteListedURI> >>>> <URI>/api/am/store/{version}/t >>>> iers/{tierLevel}/{tierName}</URI> >>>> <HTTPMethods>GET,HEAD</HTTPMethods> >>>> </WhiteListedURI> >>>> </WhiteListedURIs> >>>> <ETagSkipList> >>>> <ETagSkipURI> >>>> <URI>/api/am/store/{version}/apis</URI> >>>> <HTTPMethods>GET</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/store/{version}/apis/generate-sdk</URI> >>>> <HTTPMethods>POST</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/store/{version}/a >>>> pis/{apiId}/documents</URI> >>>> <HTTPMethods>GET</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/store/{version}/applications</URI> >>>> <HTTPMethods>GET</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/store/{version}/a >>>> pplications/generate-keys</URI> >>>> <HTTPMethods>POST</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/store/{version}/subscriptions</URI> >>>> <HTTPMethods>GET,POST</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/store/{version}/tags</URI> >>>> <HTTPMethods>GET</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/store/{version}/tiers/{tierLevel}</URI> >>>> <HTTPMethods>GET</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/store/{version}/t >>>> iers/{tierLevel}/{tierName}</URI> >>>> <HTTPMethods>GET</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/publisher/{version}/apis</URI> >>>> <HTTPMethods>GET,POST</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/publisher/{version}/apis/{apiId}</URI> >>>> <HTTPMethods>GET,DELETE,PUT</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/publisher/{versio >>>> n}/apis/{apiId}/swagger</URI> >>>> <HTTPMethods>GET,PUT</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/publisher/{versio >>>> n}/apis/{apiId}/thumbnail</URI> >>>> <HTTPMethods>GET,POST</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/publisher/{versio >>>> n}/apis/{apiId}/change-lifecycle</URI> >>>> <HTTPMethods>POST</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/publisher/{versio >>>> n}/apis/{apiId}/copy-api</URI> >>>> <HTTPMethods>POST</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/publisher/{versio >>>> n}/applications/{applicationId}</URI> >>>> <HTTPMethods>GET</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/publisher/{versio >>>> n}/apis/{apiId}/documents</URI> >>>> <HTTPMethods>GET,POST</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/publisher/{versio >>>> n}/apis/{apiId}/documents/{documentId}/content</URI> >>>> <HTTPMethods>GET,POST</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/publisher/{versio >>>> n}/apis/{apiId}/documents/{documentId}</URI> >>>> <HTTPMethods>GET,PUT,DELETE</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/publisher/{version}/environments</URI> >>>> <HTTPMethods>GET</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/publisher/{version}/subscriptions</URI> >>>> <HTTPMethods>GET</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/publisher/{versio >>>> n}/subscriptions/block-subscription</URI> >>>> <HTTPMethods>POST</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/publisher/{versio >>>> n}/subscriptions/{subscriptionId}</URI> >>>> <HTTPMethods>GET</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/publisher/{versio >>>> n}/subscriptions/unblock-subscription</URI> >>>> <HTTPMethods>POST</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/publisher/{versio >>>> n}/tiers/{tierLevel}</URI> >>>> <HTTPMethods>GET,POST</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/publisher/{versio >>>> n}/tiers/{tierLevel}/{tierName}</URI> >>>> <HTTPMethods>GET,PUT,DELETE</HTTPMethods> >>>> </ETagSkipURI> >>>> <ETagSkipURI> >>>> <URI>/api/am/publisher/{versio >>>> n}/tiers/update-permission</URI> >>>> <HTTPMethods>POST</HTTPMethods> >>>> </ETagSkipURI> >>>> </ETagSkipList> >>>> </RESTAPI> >>>> <ThrottlingConfigurations> >>>> <EnableAdvanceThrottling>true</EnableAdvanceThrottling> >>>> <DataPublisher> >>>> <Enabled>true</Enabled> >>>> <Type>Binary</Type> >>>> <ReceiverUrlGroup>tcp://${carb >>>> on.local.ip}:${receiver.url.port}</ReceiverUrlGroup> >>>> <AuthUrlGroup>ssl://${carbon.l >>>> ocal.ip}:${auth.url.port}</AuthUrlGroup> >>>> <Username>${admin.username}</Username> >>>> <Password>${admin.password}</Password> >>>> <DataPublisherPool> >>>> <MaxIdle>1000</MaxIdle> >>>> <InitIdleCapacity>200</InitIdleCapacity> >>>> </DataPublisherPool> >>>> <DataPublisherThreadPool> >>>> <CorePoolSize>200</CorePoolSize> >>>> <MaxmimumPoolSize>1000</MaxmimumPoolSize> >>>> <KeepAliveTime>200</KeepAliveTime> >>>> </DataPublisherThreadPool> >>>> </DataPublisher> >>>> <PolicyDeployer> >>>> <ServiceURL>https://localhost: >>>> ${mgt.transport.https.port}${carbon.context}services/</ServiceURL> >>>> <Username>${admin.username}</Username> >>>> <Password>${admin.password}</Password> >>>> </PolicyDeployer> >>>> <BlockCondition> >>>> <Enabled>true</Enabled> >>>> <!--InitDelay>300000</InitDelay> >>>> <Period>3600000</Period--> >>>> </BlockCondition> >>>> <JMSConnectionDetails> >>>> <Enabled>true</Enabled> >>>> <ServiceURL>tcp://${carbon.loc >>>> al.ip}:${jms.port}</ServiceURL> >>>> <Username>${admin.username}</Username> >>>> <Password>${admin.password}</Password> >>>> <Destination>throttleData</Destination> >>>> <!--InitDelay>300000</InitDelay--> >>>> <JMSConnectionParameters> >>>> <transport.jms.ConnectionFacto >>>> ryJNDIName>TopicConnectionFactory</transport.jms.ConnectionF >>>> actoryJNDIName> >>>> <transport.jms.DestinationType >>>> >topic</transport.jms.DestinationType> >>>> <java.naming.factory.initial>o >>>> rg.wso2.andes.jndi.PropertiesFileInitialContextFactory</java >>>> .naming.factory.initial> >>>> <connectionfactory.TopicConnec >>>> tionFactory>amqp://${jms.username}:${jms.password}@clientid/ >>>> carbon?brokerlist='${jms.url}'</connectionfactory.TopicConne >>>> ctionFactory> >>>> </JMSConnectionParameters> >>>> <JMSTaskManager> >>>> <MinThreadPoolSize>20</MinThreadPoolSize> >>>> <MaxThreadPoolSize>100</MaxThreadPoolSize> >>>> <KeepAliveTimeInMillis>1000</KeepAliveTimeInMillis> >>>> <JobQueueSize>10</JobQueueSize> >>>> </JMSTaskManager> >>>> </JMSConnectionDetails> >>>> <JMSEventPublisherParameters> >>>> <java.naming.factory.initial>o >>>> rg.wso2.andes.jndi.PropertiesFileInitialContextFactory</java >>>> .naming.factory.initial> >>>> <java.naming.provider.url>repo >>>> sitory/conf/jndi.properties</java.naming.provider.url> >>>> <transport.jms.DestinationType >>>> >topic</transport.jms.DestinationType> >>>> <transport.jms.Destination>thr >>>> ottleData</transport.jms.Destination> >>>> <transport.jms.ConcurrentPubli >>>> shers>allow</transport.jms.ConcurrentPublishers> >>>> <transport.jms.ConnectionFacto >>>> ryJNDIName>TopicConnectionFactory</transport.jms.ConnectionF >>>> actoryJNDIName> >>>> </JMSEventPublisherParameters> >>>> <!--DefaultLimits> >>>> <SubscriptionTierLimits> >>>> <Gold>5000</Gold> >>>> <Silver>2000</Silver> >>>> <Bronze>1000</Bronze> >>>> <Unauthenticated>60</Unauthenticated> >>>> </SubscriptionTierLimits> >>>> <ApplicationTierLimits> >>>> <50PerMin>50</50PerMin> >>>> <20PerMin>20</20PerMin> >>>> <10PerMin>10</10PerMin> >>>> </ApplicationTierLimits> >>>> <ResourceLevelTierLimits> >>>> <50KPerMin>50000</50KPerMin> >>>> <20KPerMin>20000</20KPerMin> >>>> <10KPerMin>10000</10KPerMin> >>>> </ResourceLevelTierLimits> >>>> </DefaultLimits--> >>>> <EnableUnlimitedTier>true</EnableUnlimitedTier> >>>> <EnableHeaderConditions>false</EnableHeaderConditions> >>>> <EnableJWTClaimConditions>false</EnableJWTClaimConditions> >>>> <EnableQueryParamConditions>false</EnableQueryParamConditions> >>>> </ThrottlingConfigurations> >>>> >>>> <WorkflowConfigurations> >>>> <Enabled>false</Enabled> >>>> <ServerUrl>https://localhost:9445/bpmn</ServerUrl> >>>> <ServerUser>${admin.username}</ServerUser> >>>> <ServerPassword>${admin.password}</ServerPassword> >>>> <WorkflowCallbackAPI>https://localhost:${mgt.transport.https >>>> .port}/api/am/publisher/v0.11/workflows/update-workflow-stat >>>> us</WorkflowCallbackAPI> >>>> <TokenEndPoint>https://localhost:${https.nio.port}/token</To >>>> kenEndPoint> >>>> <DCREndPoint>https://localhost:${mgt.transport.https.port}/c >>>> lient-registration/v0.11/register</DCREndPoint> >>>> <DCREndPointUser>${admin.username}</DCREndPointUser> >>>> <DCREndPointPassword>${admin.password}</DCREndPointPassword> >>>> </WorkflowConfigurations> >>>> >>>> <SwaggerCodegen> >>>> <ClientGeneration> >>>> <GroupId>org.wso2</GroupId> >>>> <ArtifactId>org.wso2.client.</ArtifactId> >>>> <ModelPackage>org.wso2.client.model.</ModelPackage> >>>> <ApiPackage>org.wso2.client.api.</ApiPackage> >>>> <!-- Configure supported languages/Frameworks as comma >>>> separated values, >>>> Supported Languages/Frameworks : android, java, scala, >>>> csharp, cpp, dart, flash, go, groovy, javascript, jmeter, >>>> nodejs, perl, php, python, ruby, swift, clojure, aspNet5, >>>> asyncScala, spring, csharpDotNet2, haskell--> >>>> <SupportedLanguages>java,android</SupportedLanguages> >>>> </ClientGeneration> >>>> </SwaggerCodegen> >>>> >>>> </APIManager> >>>> >>>> Do you need my IS one, too? >>>> >>>> Regards, >>>> >>>> Thomas >>>> >>>> 2017-06-15 22:16 GMT+02:00 Farasath Ahamed <farasa...@wso2.com>: >>>> >>>>> Would be better if you could share the api-manager.xml configuration >>>>> file to see if there are any errors in configs. >>>>> >>>>> >>>>> >>>>> >>>>> Farasath Ahamed >>>>> Software Engineer, WSO2 Inc.; http://wso2.com >>>>> Mobile: +94777603866 >>>>> Blog: blog.farazath.com >>>>> Twitter: @farazath619 <https://twitter.com/farazath619> >>>>> <http://wso2.com/signature> >>>>> >>>>> >>>>> >>>>> On Thu, Jun 15, 2017 at 8:40 PM, Thomas LEGRAND < >>>>> thomas.legr...@versusmind.eu> wrote: >>>>> >>>>>> Hello again, >>>>>> >>>>>> I followed the tutorial in [1] to configure my Identity Server (IS) >>>>>> as a key manager for my API Manager (AM). When I create my Production & >>>>>> Sandbox applications in the AM, I can see service providers created in >>>>>> the >>>>>> IS. I configures them to use SAML to retrieve informations like the >>>>>> roles, >>>>>> if the authentication is successfull. And I can "exchange" my SAML >>>>>> assertion for a OAuth token. So, everything is cool, here. >>>>>> >>>>>> But, when I try to reuse this OAuth token to access to a resource via >>>>>> the AM, it rejects me with this sweet message: >>>>>> >>>>>> <ams:fault xmlns:ams="http://wso2.org/apimanager/security"> >>>>>> <ams:code>900900</ams:code> >>>>>> <ams:message>Unclassified Authentication Failure</ams:message> >>>>>> <ams:description>Resource forbidden</ams:description> >>>>>> </ams:fault> >>>>>> >>>>>> But no errors in the logs but just a WARN. So, I activated the DEBUG >>>>>> mode and then, I can see some intersting things: >>>>>> >>>>>> [2017-06-15 16:44:52,954] WARN - APIAuthenticationHandler API >>>>>> authentication failure due to Unclassified Authentication Failure >>>>>> [2017-06-15 16:44:52,954] DEBUG - APIAuthenticationHandler API >>>>>> authentication failed with error 900900 >>>>>> org.wso2.carbon.apimgt.gateway.handlers.security.APISecurityException: >>>>>> Resource forbidden >>>>>> at org.wso2.carbon.apimgt.gateway >>>>>> .handlers.security.keys.WSAPIKeyDataStore.getAPIKeyData(WSAP >>>>>> IKeyDataStore.java:51) >>>>>> at org.wso2.carbon.apimgt.gateway >>>>>> .handlers.security.APIKeyValidator.doGetKeyValidationInfo(AP >>>>>> IKeyValidator.java:253) >>>>>> at org.wso2.carbon.apimgt.gateway >>>>>> .handlers.security.APIKeyValidator.getKeyValidationInfo(APIK >>>>>> eyValidator.java:209) >>>>>> at org.wso2.carbon.apimgt.gateway >>>>>> .handlers.security.oauth.OAuthAuthenticator.authenticate(OAu >>>>>> thAuthenticator.java:196) >>>>>> at org.wso2.carbon.apimgt.gateway >>>>>> .handlers.security.APIAuthenticationHandler.handleRequest(AP >>>>>> IAuthenticationHandler.java:117) >>>>>> at org.apache.synapse.rest.API.process(API.java:325) >>>>>> at org.apache.synapse.rest.RESTRe >>>>>> questHandler.dispatchToAPI(RESTRequestHandler.java:90) >>>>>> at org.apache.synapse.rest.RESTRe >>>>>> questHandler.process(RESTRequestHandler.java:69) >>>>>> at org.apache.synapse.core.axis2. >>>>>> Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironmen >>>>>> t.java:304) >>>>>> at org.apache.synapse.core.axis2. >>>>>> SynapseMessageReceiver.receive(SynapseMessageReceiver.java:78) >>>>>> at org.apache.axis2.engine.AxisEn >>>>>> gine.receive(AxisEngine.java:180) >>>>>> at org.apache.synapse.transport.p >>>>>> assthru.ServerWorker.processNonEntityEnclosingRESTHandler(Se >>>>>> rverWorker.java:325) >>>>>> at org.apache.synapse.transport.p >>>>>> assthru.ServerWorker.run(ServerWorker.java:158) >>>>>> at org.apache.axis2.transport.bas >>>>>> e.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) >>>>>> at java.util.concurrent.ThreadPoo >>>>>> lExecutor.runWorker(ThreadPoolExecutor.java:1142) >>>>>> at java.util.concurrent.ThreadPoo >>>>>> lExecutor$Worker.run(ThreadPoolExecutor.java:617) >>>>>> at java.lang.Thread.run(Thread.java:745) >>>>>> Caused by: org.wso2.carbon.apimgt.gateway >>>>>> .handlers.security.APISecurityException: Error while accessing >>>>>> backend services for API key validation >>>>>> at org.wso2.carbon.apimgt.gateway >>>>>> .handlers.security.keys.APIKeyValidatorClient.getAPIKeyData( >>>>>> APIKeyValidatorClient.java:114) >>>>>> at org.wso2.carbon.apimgt.gateway >>>>>> .handlers.security.keys.WSAPIKeyDataStore.getAPIKeyData(WSAP >>>>>> IKeyDataStore.java:48) >>>>>> ... 16 more >>>>>> Caused by: org.apache.axis2.AxisFault: org.apache.axis2.AxisFault: >>>>>> Mapping qname not fond for the package: java.util >>>>>> >>>>>> From here, I don't know what to do since I tried some fancy URLs for >>>>>> the ServerURL value in the elements AuthManager and APIKeyValidator. >>>>>> My IS has an offset of 5 so the port is 9448. Here is the URL I used >>>>>> to point to the IS server: https://localhost:9448/services/ >>>>>> >>>>>> Is there a way to know in which URL the IS deploy its Key Manager >>>>>> feature web services (WS)? >>>>>> Should I reinstall the Key Manager feature in the IS? >>>>>> >>>>>> Regards, >>>>>> >>>>>> Thomas >>>>>> >>>>>> [1] https://docs.wso2.com/display/AM210/Configuring+WSO2+Ide >>>>>> ntity+Server+as+a+Key+Manager >>>>>> >>>>>> _______________________________________________ >>>>>> Dev mailing list >>>>>> Dev@wso2.org >>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>> >>>>>> >>>>> >>>> >>>> _______________________________________________ >>>> Dev mailing list >>>> Dev@wso2.org >>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>> >>>> >>> >>> >>> -- >>> Rajith Roshan >>> Software Engineer, WSO2 Inc. >>> Mobile: +94-7 <%2B94-71-554-8430>17-064-214 >>> >> >> > -- Rajith Roshan Software Engineer, WSO2 Inc. Mobile: +94-7 <%2B94-71-554-8430>17-064-214
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev