wso2 / carbon-identity-framework Goto Github PK
View Code? Open in Web Editor NEWLicense: Apache License 2.0
License: Apache License 2.0
Description:
Requested claims in are available at the first request but consequent second request to the IS without login out(When the cookie is available) will not return the requested claims.
Suggested Labels:
N/A
Suggested Assignees:
N/A
Affected Product Version:
5.5.0
OS, DB, other environment details and versions:
Steps to reproduce:
Related Issues:
Cannot set value in CookieBuilder class to false. As per the logic in the code we cannot set value to false.
Reference: #900
I have connected Wso2 with an external LDAP. So, i want to handle the LDAP groups. However in Wso2 doc it states to use :
groupOfNames
as our objectClass
andmember
as our MembershipAttribute
However my current LDAP server is not like that. This means that i use
PosixGroup
as my objectClass
andmemberUid
for my MembershipAttribute
This leads me to the point that , when i add a user to a group, then Wso2 goes and puts this value uid=b1,ou=users,dc=transip,dc=nl
inside memberUid
. This is not compatible with my set up. What i need is Wso2 to just put the user's uid
in the memberUid
field and then the entry will be compatible with the rest of my setup.
How can i configure Wso2 to pass the uid
when adding a user to a group instead of passing dn
(Distinguished Name).
Description:
Additional Query Parameters field omits space separated values
Affected Product Version: 5.1.3
Steps to reproduce:
But this is correctly shown in the url : scope=openid+profile
Therefore, the issue is in the UI component.
I noticed following log when login to IS. We can improve the error message, so that users will know which claim is duplicated exactly.
TID: [-1234] [] [2017-09-13 15:33:08,779] ERROR {org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver} - Duplicate claim exist in the system. Please pick a different Claim Uri
org.wso2.carbon.claim.mgt.ClaimManagementException: Duplicate claim exist in the system. Please pick a different Claim Uri
Like '%' are not allowed to put with the ACS URL.
Have to check each place where we do this validation.
Conditional Authentication needs to support claim handling.
Description:
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Implicit conversion from data type nvarchar(max) to varbinary(max) is not allowed. Use the CONVERT function to run this query.
DB script fix:
CREATE TABLE SP_AUTH_SCRIPT (
ID INTEGER IDENTITY NOT NULL,
TENANT_ID INTEGER NOT NULL,
APP_ID INTEGER NOT NULL,
TYPE VARCHAR(255) NOT NULL,
CONTENT NVARCHAR(MAX) DEFAULT NULL,
IS_ENABLED CHAR(1) NOT NULL DEFAULT '0',
PRIMARY KEY (ID)
);
Suggested Labels:
Suggested Assignees:
Affected Product Version:
OS, DB, other environment details and versions:
Steps to reproduce:
Related Issues:
Description:
Create index IDX_IDN_SCIM_GROUP_TI_RN_AN fails when running on MySQL v5.6 as the max key length exceds.
[2018-06-20 11:28:30,310] DEBUG {org.wso2.carbon.identity.core.persistence.IdentityDBInitializer} - SQL : CREATE INDEX IDX_IDN_SCIM_GROUP_TI_RN_AN ON IDN_SCIM_GROUP (TENANT_ID, ROLE_NAME, ATTR_NAME)
[2018-06-20 11:28:30,315] ERROR {org.wso2.carbon.identity.core.internal.IdentityCoreServiceComponent} - Error occurred while populating identity configuration properties
org.wso2.carbon.identity.base.IdentityRuntimeException: java.sql.SQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes
at org.wso2.carbon.identity.base.IdentityRuntimeException.error(IdentityRuntimeException.java:71)
at org.wso2.carbon.identity.core.persistence.IdentityDBInitializer.executeSQL(IdentityDBInitializer.java:351)
at org.wso2.carbon.identity.core.persistence.IdentityDBInitializer.executeSQLScript(IdentityDBInitializer.java:264)
at org.wso2.carbon.identity.core.persistence.IdentityDBInitializer.createIdentityDatabase(IdentityDBInitializer.java:141)
at org.wso2.carbon.identity.core.persistence.JDBCPersistenceManager.initializeDatabase(JDBCPersistenceManager.java:112)
at org.wso2.carbon.identity.core.internal.IdentityCoreServiceComponent.activate(IdentityCoreServiceComponent.java:133)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:235)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:345)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197)
at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:343)
at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222)
at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:451)
at org.wso2.carbon.core.init.CarbonServerManager.initializeCarbon(CarbonServerManager.java:515)
at org.wso2.carbon.core.init.CarbonServerManager.start(CarbonServerManager.java:220)
at org.wso2.carbon.core.internal.CarbonCoreServiceComponent.activate(CarbonCoreServiceComponent.java:94)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:260)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:345)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197)
at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:343)
at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222)
at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
at org.eclipse.equinox.http.servlet.internal.Activator.registerHttpService(Activator.java:81)
at org.eclipse.equinox.http.servlet.internal.Activator.addProxyServlet(Activator.java:60)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.init(ProxyServlet.java:40)
at org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.init(DelegationServlet.java:38)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1230)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1174)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1066)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5370)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5668)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1700)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1690)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.sql.SQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:536)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:513)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:115)
at com.mysql.cj.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:1983)
at com.mysql.cj.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:1936)
at com.mysql.cj.jdbc.StatementImpl.executeInternal(StatementImpl.java:891)
at com.mysql.cj.jdbc.StatementImpl.execute(StatementImpl.java:795)
at sun.reflect.GeneratedMethodAccessor34.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114)
at com.sun.proxy.$Proxy18.execute(Unknown Source)
at org.wso2.carbon.identity.core.persistence.IdentityDBInitializer.executeSQL(IdentityDBInitializer.java:318)
... 64 more
Description:
GraphBasedSequenceHandler cotains
synchronized (context) {
try {
context.wait();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
log.error("Error while waiting for the external call the complete. ", e);
}
}
Have a proper timeout handling and bail out with exception.
Suggested Labels:
Suggested Assignees:
Affected Product Version:
OS, DB, other environment details and versions:
Steps to reproduce:
Related Issues:
Description:
Getting a null pointer when in 'updateApplication' method when 'PermissionAndRoleConfig' is set to null in the admin service request. [ 1 ]
References
[ 1 ]
Affected Product Version:
IS 5.2.0
Description:
HttpServletRequest and HttpServletREsponse objects are added to AuthenticationContext on Conditional Authentication enhancement.
However this information should not be visible to any code consuming AuthenticationContext.
Suggested Labels:
IS 5.5.0
Suggested Assignees:
ruwanta
Affected Product Version:
IS 5.5.0
OS, DB, other environment details and versions:
Steps to reproduce:
Related Issues:
Description:
Observing issues in different database types due to using VARCHAR(40960). Need to change the data type and implementation to resolve the issues.
Description:
Few places in identity framework has XercesImpl hard dependency. This is unnecessary as JDK now packs XercesImpl, and the software should use the XercesImpl from JDK.
Having the dependency causes DocumentBuilderFactory to be clashed with the provided one in the JDK.
Suggested Labels:
improvement
Suggested Assignees:
Affected Product Version:
OS, DB, other environment details and versions:
Steps to reproduce:
Providing facility to change the authentication flow based on conditions in JavaScript. JavaScript can control the authentication step selection, changing user attributes
Hi,
Can you let me know if there is an obvious way to pull claims (I.E LDAP groups) from 2 users stores when a given user exists in both and may have different roles in both stores?
Thanks in advance.
Description:
I’m working on a REST API for APIM which allow the admin users to change the owner of a Application. This API will help in transferring the oAuth apps which are created by a user who has left the organization. I tried to set owner using updateApplication method in IdentityApplicationManagementService but the owner of the application didn’t change in the DB and there was no errors as well.
We need this functionality since owner field is used in stats and JWT token generation in APIM and these has to be updated once the user name is updated.
Suggested Labels:
Severity/Major,Type/Bug
Suggested Assignees:
Affected Product Version:
OS, DB, other environment details and versions:
Steps to reproduce:
Related Issues:
sould be :
<h2 id="custom_auth_head_<%=fedConfig.getDisplayName() %>" class="sectionSeperator trigger active"
Allow adding custom authentication templates by identity administrator
Needs to be dynamically re-loaded.
Description:
User delete event recorder is currently only printing tenant id.
Suggested Labels:
N/A
Suggested Assignees:
N/A
Affected Product Version:
5.5.0-alpha2
OS, DB, other environment details and versions:
N/A
Steps to reproduce:
N/A
Related Issues:
N/A
Description:
Implement the functionality to import and export full SP configurations as xml file with UI changes and configuration validations
Description:
When you try out OpenID connect hybrid flow with code, id_token it gives a null pointer exception. Following stack trace is printed.
java.lang.NullPointerException
at org.wso2.carbon.identity.oauth2.authz.handlers.util.ResponseTypeHandlerUtil.addUserAttributesToCache(ResponseTypeHandlerUtil.java:328)
at org.wso2.carbon.identity.oauth2.authz.handlers.util.ResponseTypeHandlerUtil.buildIdToken(ResponseTypeHandlerUtil.java:290)
at org.wso2.carbon.identity.oauth2.authz.handlers.util.ResponseTypeHandlerUtil.buildIDTokenResponseDTO(ResponseTypeHandlerUtil.java:268)
at org.wso2.carbon.identity.oauth2.authz.handlers.HybridResponseTypeHandler.issue(HybridResponseTypeHandler.java:67)
at org.wso2.carbon.identity.oauth2.authz.AuthorizationHandlerManager.handleAuthorization(AuthorizationHandlerManager.java:97)
at org.wso2.carbon.identity.oauth2.OAuth2Service.authorize(OAuth2Service.java:100)
at org.wso2.carbon.identity.oauth.endpoint.authz.OAuth2AuthzEndpoint.authorize(OAuth2AuthzEndpoint.java:1874)
at org.wso2.carbon.identity.oauth.endpoint.authz.OAuth2AuthzEndpoint.handleUserConsent(OAuth2AuthzEndpoint.java:802)
at org.wso2.carbon.identity.oauth.endpoint.authz.OAuth2AuthzEndpoint.handleResponseFromConsent(OAuth2AuthzEndpoint.java:354)
at org.wso2.carbon.identity.oauth.endpoint.authz.OAuth2AuthzEndpoint.authorize(OAuth2AuthzEndpoint.java:203)
at org.wso2.carbon.identity.oauth.endpoint.authz.OAuth2AuthzEndpoint.authorizePost(OAuth2AuthzEndpoint.java:231)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:188)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:104)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:204)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:101)
at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:94)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:249)
at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:248)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:222)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:153)
at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:171)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:289)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:209)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:265)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.wso2.carbon.webapp.mgt.filter.AuthorizationHeaderFilter.doFilter(AuthorizationHeaderFilter.java:85)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.wso2.carbon.ui.filters.cache.ContentTypeBasedCachePreventionFilter.doFilter(ContentTypeBasedCachePreventionFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:124)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.wso2.carbon.identity.context.rewrite.valve.TenantContextRewriteValve.invoke(TenantContextRewriteValve.java:80)
at org.wso2.carbon.identity.authz.valve.AuthorizationValve.invoke(AuthorizationValve.java:91)
at org.wso2.carbon.identity.auth.valve.AuthenticationValve.invoke(AuthenticationValve.java:60)
at org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:99)
at org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47)
at org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:57)
at org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47)
at org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:62)
at org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:159)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
at org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:57)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1775)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1734)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Suggested Labels:
Suggested Assignees:
Affected Product Version:
IS-5.6.0-rc3
OS, DB, other environment details and versions:
Steps to reproduce:
Setup oauth2 playground app
Issue an authorization request as follows:
https://localhost:9443/oauth2/authorize?response_type=code id_token&client_id=&nonce=asd&redirect_uri=http://localhost:8080/playground2/oauth2client&scope=openid
Related Issues:
Description:
In application-authentication.xml file, the client_id, client_secret parameters are still configurable even though those are moved to the Management Console UI
Suggested Labels:
IS
Suggested Assignees:
prakhash
Affected Product Version:
5.4.0
OS, DB, other environment details and versions:
Steps to reproduce:
Related Issues:
Description:
WSO2 identity server 5.5.0 is throwing the Caused by: org.wso2.carbon.user.core.UserStoreException: Invalid data provided exception when we try to confirm the user registration via confirmUserSelfRegistration soap operation of the UserInformationRecoveryService admin service.
The complete exception thrown is
TID: [-1234] [] [2018-05-15 17:52:53,914] ERROR {org.wso2.carbon.identity.mgt.services.UserInformationRecoveryService} - Error while validating confirmation code for user : [email protected] org.wso2.carbon.identity.base.IdentityException: Error while persisting identity user data in to user store for user: [email protected] at org.wso2.carbon.identity.base.IdentityException.error(IdentityException.java:60) at org.wso2.carbon.identity.mgt.store.UserStoreBasedIdentityDataStore.setUserClaimsValuesInUserStore(UserStoreBasedIdentityDataStore.java:230) at org.wso2.carbon.identity.mgt.store.UserStoreBasedIdentityDataStore.store(UserStoreBasedIdentityDataStore.java:85) at org.wso2.carbon.identity.mgt.util.UserIdentityManagementUtil.unlockUserAccount(UserIdentityManagementUtil.java:276) at org.wso2.carbon.identity.mgt.services.UserInformationRecoveryService.confirmUserSelfRegistration(UserInformationRecoveryService.java:1298) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:212) at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:117) at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40) at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:110) at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:173) at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:147) at org.wso2.carbon.core.transports.CarbonServlet.doPost(CarbonServlet.java:232) at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61) at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128) at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:68) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service(DelegationServlet.java:68) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.owasp.csrfguard.CsrfGuardFilter.doFilter(CsrfGuardFilter.java:72) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:124) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.wso2.carbon.tomcat.ext.filter.CharacterSetFilter.doFilter(CharacterSetFilter.java:65) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:124) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.wso2.carbon.identity.context.rewrite.valve.TenantContextRewriteValve.invoke(TenantContextRewriteValve.java:80) at org.wso2.carbon.identity.authz.valve.AuthorizationValve.invoke(AuthorizationValve.java:91) at org.wso2.carbon.identity.auth.valve.AuthenticationValve.invoke(AuthenticationValve.java:60) at org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:99) at org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47) at org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:57) at org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47) at org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:62) at org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:159) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962) at org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:57) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1775) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1734) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748) Caused by: org.wso2.carbon.user.core.UserStoreException: Error occurred while getting claim attribute for user : [email protected] at org.wso2.carbon.user.core.jdbc.JDBCUserStoreManager.doSetUserClaimValues(JDBCUserStoreManager.java:2164) at com.wso2.carbon.custom.user.store.manager.CustomPrimaryUserStoreManager.doSetUserClaimValues(CustomPrimaryUserStoreManager.java:125) at org.wso2.carbon.identity.mgt.store.UserStoreBasedIdentityDataStore.setUserClaimsValuesInUserStore(UserStoreBasedIdentityDataStore.java:218) ... 64 more Caused by: org.wso2.carbon.user.core.UserStoreException: Invalid data provided at org.wso2.carbon.user.core.jdbc.JDBCUserStoreManager.batchUpdateStringValuesToDatabase(JDBCUserStoreManager.java:3168) at org.wso2.carbon.user.core.jdbc.JDBCUserStoreManager.updateProperties(JDBCUserStoreManager.java:3114) at org.wso2.carbon.user.core.jdbc.JDBCUserStoreManager.doSetUserClaimValues(JDBCUserStoreManager.java:2151) ... 66 more
Suggested Labels:
Suggested Assignees:
Affected Product Version:
IS 5.5.0
OS, DB, other environment details and versions:
Steps to reproduce:
Configure IS for JDBC user store by changing
master-datasource.xml
user-mgt.xml
Configure IS for Self sign up as in [2]. I have disable captcha verification and email sending.
Change the Identity.Mgt.User.Data.Store to org.wso2.carbon.identity.mgt.store.UserStoreBasedIdentityDataStore instead of having the default org.wso2.carbon.identity.mgt.store.JDBCIdentityDataStore in identity-mgt.properties
create a user invoking registerUser operation. You will get the confirmation code.
use the above code for the request
<confirmUserSelfRegistration xmlns="http://services.mgt.identity.carbon.wso2.org">
<username>[email protected]</username>
<code>10102ad0-39d2-4ac6-996f-ea9af43d5a60</code>
</confirmUserSelfRegistration>
[2] https://docs.wso2.com/display/IS520/Self+Sign+Up+and+Account+Confirmation
Related Issues:
Description:
In the authentication, flow the parameters from authentication script to Authenticators
Description:
The ClaimDialectDAO used in ClaimMetadataManagementServiceImpl and DefaultClaimMetadataStore calls the underlying DB directly per each request.
The claim dialect can be cached locally as this is seldom changed.
Add CacheBackedClaimDialectDAO and use it instead of ClaimDialectDAO.
Suggested Labels:
Improvement
Suggested Assignees:
Affected Product Version:
IS 5.3.0, IS 5.4.0, IS 5.5.0
OS, DB, other environment details and versions:
All Databases.
Steps to reproduce:
Related Issues:
Description:
Add the facility to record delete events of the user. Create a post delete listener to track the delete events and record them using custom recorder.
Following listener needs to be enable to run the Recorders. (In identity.xml)
<EventListener type="org.wso2.carbon.user.core.listener.UserOperationEventListener"
name="org.wso2.carbon.user.mgt.listeners.UserDeletionEventListener"
orderId="98" enable="false"/>
</EventListeners>
After that add the recorders as follow. You can add any number of recorders from different type. But only one will be picked for each single type.
Can give any number of properties for each recorder. If they are not used explicilty in the recorder logic, they will be printed as properties of the recorder.
DefaultUserDeleteEventRecorder is the inbuilt recorder. Which will print the user deletion events as a CSV file for the given path.
Carbon place holders can be used in the file paths.
<!-- These recorders are used to write user delete information to specific sources. Default event recorder is CSV
file recorder. This recorder is disabled by default. Enable it by setting enable="true". To run these recorders,
EventListener "rg.wso2.carbon.user.mgt.listeners.UserDeletionEventListener" also should be enabled. Which is
also disabled by default. -->
<UserDeleteEventRecorders>
<UserDeleteEventRecorder name="org.wso2.carbon.user.mgt.recorder.DefaultUserDeleteEventRecorder" enable="false">
<Property name="path">${carbon.home}/repository/logs/delete-records.csv</Property>
</UserDeleteEventRecorder>
</UserDeleteEventRecorders>
Suggested Labels:
N/A
Suggested Assignees:
N/A
Affected Product Version:
5.5.0
OS, DB, other environment details and versions:
Steps to reproduce:
N/A
Related Issues:
N/A
Description:
Right we have remove the domain of the roles within the ProvisioningHandler level and because of that it is not allowed to add internal or application roles from the ProvisioningHandler extensions.
Suggested Labels:
We have already validated this user store domain within user store operation level and we don't need to do that from ProvisioningHandler level
Suggested Assignees:
[email protected]
Affected Product Version:
5.3.0,5.4.0,5.4.1,5.5.0
Steps to reproduce:
Write an extended version of ProvisioningHandler and try to add an application role to the role list. Then it will throw an exception saying that role doesn't exist.
So i am trying to extend Scim Schema but even though i have enabled extention
<Property name="user-schema-extension-enabled">true</Property>
When i call Scim Api it still returns using only the core schema
"schemas": [
"urn:scim:schemas:core:1.0"
],
Is this correct ? What do i need to do to actually get an extended response ?
sould be "federation.hub.identity.provider" (?)
Description:
Any authenticator that is not federated authenticator and that is not use the user store to authenticate the user (E.g SMSOTP,TOTP,EmailOTP) can extend this new abstract application authenticator. Hence event firing for account locking will happened for that particular authenticators only from the framework level without affecting the existing implementation(AbstractApplicationAuthenticator).
Description:
Tenant domain is not printed in service provider creation and workflow event listener audit logs.
Suggested Labels:
N/A
Suggested Assignees:
N/A
Affected Product Version:
5.5.0-Alpha
OS, DB, other environment details and versions:
Steps to reproduce:
Create a service provider from a user and check audit logs.
Related Issues:
N/A
I have downloaded carbon-identity-framework on Windows7 enterprise but trouble unzipping.
Description:
We've updated the carbon identity framework version from 5.7.29 to 5.8.139 in Product-EI latest build. But we observed the freshly built pack fails to start with an error stating org.h2.jdbc.JdbcSQLException: Table "IDN_CLAIM_DIALECT" not found; and org.h2.jdbc.JdbcSQLException: Table "IDP" not found; . The error log is attached.errorlog.txt. We've checked the database and noticed that identity tables were not created.
But when we tried to start the pack with -Dsetup tables get created and server starts fine.
Suggested Labels:
Carbon-Identity-Framwork
Suggested Assignees:
Affected Product Version:
EI 6.1.1
OS, DB, other environment details and versions:
Steps to reproduce:
Related Issues:
Description:
When adding a local claim through ClaimMetadataManagementService, it accepts the soap request without mapped attribute. This behavior cause errors when using claim mapping.
Suggested Labels:
claim-mgt,bug
Suggested Assignees:
@darshanasbg
Affected Product Version:
IS-5.4.0 GA
Steps to reproduce:
Add local claim through ClaimMetadataManagementService without mapped attributes.
Related Issues:
#1235
Description:
Calling getRolePermissions for non-existing role returns with all permissions with false value. Should validate the role existency within the same call and return an appropriate response.
Affected Product Version:
IS-5.3.0
Steps to reproduce:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://org.apache.axis2/xsd"> <soapenv:Header/> <soapenv:Body> <xsd:getRolePermissions> <!--Optional:--> <xsd:roleName>mockrole</xsd:roleName> </xsd:getRolePermissions> </soapenv:Body> </soapenv:Envelope>
Ability to make authentication decisions based on environmental properties (HTTP headers, cookie values, IP address, etc) and user attributes.
We are trying to retrieve user last Login timestamp and display in UI. For this, we are getting the last login timestamp from user claims. However, after user logs in to their account the timestamp gets updated and the token generated after login returns the current login time.
We need the last login timestamp and not the current one.
Is this the expected behavior?
If yes, how do we achieve the last one and not the current one (Is there different claim for it?).
If no, what did we miss?
Description:
PostgreSQL is supported for LowerCaseIdentifiers. So following is not working when using with a PostgreSQL database.
DatabaseMetaData metaData = connection.getMetaData();
metaData.getTables(null, null, "IDN_ASSOCIATED_ID", new String[] { "TABLE" })
In PostgreSQL, we have to use as follows(Note the lowercase table identifier).
DatabaseMetaData metaData = connection.getMetaData();
metaData.getTables(null, null, "idn_associated_id", new String[] { "TABLE" })
But this will differ from database to database since some databases support for lowercase and some databases support for uppercase. So as a general solution, we need to first check how the database stores identifiers and then get the tables according to that. We can determine that using the following method calls.
meta.storesUpperCaseIdentifiers()
meta.storesLowerCaseIdentifiers()
meta.storesMixedCaseIdentifiers()
Suggested Labels:
Bug
Affected Product Version:
v5.11.148
OS, DB, other environment details and versions:
jdk1.8
Postgresql database
Steps to reproduce:
Description:
When trying to reset the password using ask password this issue has happened.
Steps to reproduce:
Configure to reset the password using ask password.
Set the expired link to 1day.
Click on the redirection URL of the received email after expire day.
Enter the password and submit. (It should give some kind of error indicate the link is expired.But, they get an empty screen without any error).
This issue has happened for below scenarios.
When trying to reset the password by clicking the received link of the email, after the expiryTime.
When trying to reset the password reusing the received link of the email, before the expiryTime.
Description:
Suggested Labels:
Bug, UX
Description:
In the jaas.conf, useKeyTab value is mentioned as tfalse. I think this can be either true or false. We can correct this as false.
Suggested Labels:
Minor, Bug
Suggested Assignees:
Affected Product Version:
5.3.0
OS, DB, other environment details and versions:
Steps to reproduce:
Related Issues:
Description:
When adding a local claim there are some required fields, mapped attribute is one of them. But mapped attribute allow space as a valid input and allows to add a local claim.
But after got added there is no mapped attribute.
It should be corrected as, not to allow the space when add mapped attribute.
Suggested Labels:
claim-mgt,bug
Affected Product Version:
5.3.0 GA
Steps to reproduce:
Go to claims->Add->Add Local Claim->.
Provide the required information and give space for mapped attribute.
Description:
Current i18n Util does not support dynamic value concatenation to an existing string. It'll be better to support this.
Suggested Labels:
Improvement
Suggested Assignees:
@ayshsandu
Affected Product Version:
v5.5.0 Alpha
OS, DB, other environment details and versions:
Steps to reproduce:
Related Issues:
Description:
When using the XML import service provider feature on the management console, an XML without consent config throws a NullPointerException
when validation consent configs as some XML files do not contain consent configs.
Suggested Labels:
Suggested Assignees:
Affected Product Version:
OS, DB, other environment details and versions:
Steps to reproduce:
product-is
with framework version 5.12.54-SNAPSHOT
product-is
and import example SP XML.Related Issues:
Description:
CeritificateInfo array element missing in identity provider type in identity application mgt wsdl
Suggested Labels:
Suggested Assignees:
Affected Product Version:
5.5.0
OS, DB, other environment details and versions:
Steps to reproduce:
Related Issues:
Description:
Identity Server 5.3.0 was behaved as outbound provisioning is triggered only by enabling JIT in IDP. So in SP side we have a option to enable the JIT with outbound provisioning as in [1].
So why do we need to enable the JIT in IDP side as well ?
[1] https://docs.wso2.com/display/IS541/Configuring+Outbound+Provisioning+for+a+Service+Provider
Suggested Labels:
IS 5.5.0
Suggested Assignees:
thanujalk
Affected Product Version:
IS 5.5.0
OS, DB, other environment details and versions:
Steps to reproduce:
Related Issues:
Description:
In a scenario where there is a need to add or update service provider configurations, the addition or update of the configuration might be done in a lower environment(QA, Staging), in that case, the new iteration of the configuration needs to be moved manually into the subsequent higher environment.
This feature will automate that process of manually importing configurations by allowing the Identity Admin to configure an automatic process that will get exported service providers (with the help of wso2/product-is#3346) from a remote repository and deploy it in the system.
Suggested Labels:
Feature
Suggested Assignees:
kaveenr
Description:
SELECT TOP expression without parenthesis is deprecated and not supported from MS SQL server 2005 onwards [1][2] Correct way to do this is by including the number within parenthesis.
Eg: DELETE TOP (%d) FROM IDN_AUTH_SESSION_STORE WHERE TIME_CREATED < ? AND TENANT_ID = ?
Need to modify SQL queries with TOP expressions to include parenthesis around the expression value.
[1] https://social.msdn.microsoft.com/Forums/sqlserver/en-US/a20c68c0-6c20-4be4-9059-295d1e639f55/why-is-the-select-top-expression-without-parentheses-not-recommended-post-sql-2000?forum=transactsql
[2] http://www.dotnetfunda.com/articles/show/59/difference-between-top-clause-in-sql-2000-and-sql-2005
Suggested Labels:
Bug,identity-framework
Suggested Assignees:
Affected Product Version:
IS 5.3.0 WUM updated pack
OS, DB, other environment details and versions:
MS SQL server
Steps to reproduce:
Set up WSO2 IS with MS SQL server
Configure session data clean up task as follows in identity.xml file
<SessionDataCleanUp>
<Enable>true</Enable>
<CleanUpTimeout>2</CleanUpTimeout>
<CleanUpPeriod>4</CleanUpPeriod>
</SessionDataCleanUp>
Restart the server.
When the clean up task runs following error logged in the console.
TID: [-1] [] [2017-12-13 13:59:45,581] ERROR {org.wso2.carbon.identity.application.authentication.framework.store.SessionDataStore} - Error while removing session data from the database for nano time 1511960385327480568
com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '50000'.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:258)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1535)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:467)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:409)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7151)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2478)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:219)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:199)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(SQLServerPreparedStatement.java:356)
at sun.reflect.GeneratedMethodAccessor136.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114)
at com.sun.proxy.$Proxy22.executeUpdate(Unknown Source)
at org.wso2.carbon.identity.application.authentication.framework.store.SessionDataStore.removeExpiredRememberMeSessions(SessionDataStore.java:435)
at org.wso2.carbon.identity.application.authentication.framework.store.SessionDataStore.removeExpiredRememberMeSessions(SessionDataStore.java:387)
at org.wso2.carbon.identity.application.authentication.framework.store.SessionDataStore.removeExpiredSessionData(SessionDataStore.java:463)
at org.wso2.carbon.identity.application.authentication.framework.store.SessionCleanUpService$DatabaseCleanUpTask.run(SessionCleanUpService.java:71)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Related Issues:
carbon-identity-framework/components/identity-mgt/org.wso2.carbon.identity.mgt.endpoint/src/main/webapp/password-reset-complete.jsp
has two error codes hardcoded
String passwordHistoryErrorCode = "20035";
String passwordPatternErrorCode = "22001";
according to the docs https://docs.wso2.com/display/IS530/Error+Codes+and+Descriptions
20035 isnt in the list and 22001 is actually passwordHistoryErrorCode
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.