text: "use strict";(self.webpackChunkdocusaurus_template=self.webpackChunkdocusaurus_template||[]).push([[2981],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return m}});var o=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},s=Object.keys(e);for(o=0;o<s.length;o++)n=s[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(o=0;o<s.length;o++)n=s[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=o.createContext({}),u=function(e){var t=o.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},l=function(e){var t=u(e.components);return o.createElement(c.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},d=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,s=e.originalType,c=e.parentName,l=i(e,["components","mdxType","originalType","parentName"]),d=u(n),m=r,y=d["".concat(c,".").concat(m)]||d[m]||p[m]||s;return n?o.createElement(y,a(a({ref:t},l),{},{components:n})):o.createElement(y,a({ref:t},l))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var s=n.length,a=new Array(s);a[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:r,a[1]=i;for(var u=2;u<s;u++)a[u]=n[u];return o.createElement.apply(null,a)}return o.createElement.apply(null,n)}d.displayName="MDXCreateElement"},13919:function(e,t,n){function o(e){return!0===/^(\w*:|\/\/)/.test(e)}function r(e){return void 0!==e&&!o(e)}n.d(t,{b:function(){return o},Z:function(){return r}})},44996:function(e,t,n){n.d(t,{C:function(){return s},Z:function(){return a}});var o=n(52263),r=n(13919);function s(){var e=(0,o.Z)().siteConfig,t=(e=void 0===e?{}:e).baseUrl,n=void 0===t?"/":t,s=e.url;return{withBaseUrl:function(e,t){return function(e,t,n,o){var s=void 0===o?{}:o,a=s.forcePrependBaseUrl,i=void 0!==a&&a,c=s.absolute,u=void 0!==c&&c;if(!n)return n;if(n.startsWith("#"))return n;if((0,r.b)(n))return n;if(i)return t+n;var l=n.startsWith(t)?n:t+n.replace(/^\//,"");return u?e+l:l}(s,n,e,t)}}}function a(e,t){return void 0===t&&(t={}),(0,s().withBaseUrl)(e,t)}},70953:function(e,t,n){n.r(t),n.d(t,{frontMatter:function(){return c},contentTitle:function(){return u},metadata:function(){return l},toc:function(){return p},default:function(){return m}});var o=n(87462),r=n(63366),s=(n(67294),n(3905)),a=n(44996),i=["components"],c={id:"projects",title:"Projects"},u=void 0,l={unversionedId:"ecosystem/projects",id:"ecosystem/projects",isDocsHomePage:!1,title:"Projects",description:"We provide an open source ecosystem of services with clear boundaries that solve",source:"@site/docs/ecosystem/projects.md",sourceDirName:"ecosystem",slug:"/ecosystem/projects",permalink:"/docs/ecosystem/projects",editUrl:"https://github.com/ory/docs/edit/master/docs/docs/ecosystem/projects.md",tags:[],version:"current",lastUpdatedBy:"marneysofia",lastUpdatedAt:1629711830,formattedLastUpdatedAt:"8/23/2021",frontMatter:{id:"projects",title:"Projects"},sidebar:"docs",previous:{title:"Community",permalink:"/docs/ecosystem/community"},next:{title:"Software Versions",permalink:"/docs/ecosystem/versioning"}},p=[],d={toc:p};function m(e){var t=e.components,n=(0,r.Z)(e,i);return(0,s.kt)("wrapper",(0,o.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("p",null,"We provide an open source ecosystem of services with clear boundaries that solve\nauthentication and authorization:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Ory Kratos is an identity management server."),(0,s.kt)("li",{parentName:"ul"},"Ory Hydra is an OAuth 2.0 and OpenID Connect provider."),(0,s.kt)("li",{parentName:"ul"},"Ory Oathkeeper is an Identity and Access Proxy."),(0,s.kt)("li",{parentName:"ul"},"Ory Keto is an access control server.")),(0,s.kt)("p",null,"Each service works standalone but you can also combine them to get the full\nfeature set. If you've never heard of an Identity & Access Proxy before, or you\nwant to learn more about the individual services and how they play together,\nstick with us through the next paragraphs."),(0,s.kt)("p",null,"Almost every application has the concept of users and permissions. An anonymous\nuser, for example, is allowed to read blog posts while certain authenticated\nusers are allowed to write blog posts. While this is the basis for most\napplications out there, access control becomes increasingly complex as an\napplication grows. What started out with a user's username and password now\nshifted to machine-2-machine interaction, third party developers accessing your\nuser's data, and maybe even a micro service system architecture."),(0,s.kt)("p",null,"Our projects solve the simplest use case and give you the ability to instantly\nready the system for more complex scenarios without painful and slow upgrade\nprocesses."),(0,s.kt)("p",null,(0,s.kt)("img",{parentName:"p",src:"https://raw.githubusercontent.com/ory/meta/master/static/logos/logo-kratos.svg",alt:"Ory Kratos"})),(0,s.kt)("p",null,"The identity management server Ory Kratos enables you to implement user\nmanagement, login and registration in a secure and straightforward way. Don't\nrewrite every aspect of identity management yourself. Ory Kratos implements all\ncommon flows such as login and logout, account activation, mfa/2fa, profile and\nsession management, user facing errors and account recovery methods. Just spin\nup a docker image and write a simple UI for it in the language or framework of\nyour choice. Don't worry about GDPR, address verification or protecting your\nusers data against common and frequently changing attack vectors. Ory Kratos\napplies security standards established by experts (National Institute of\nSciences NIST, Internet Engineering Task Force IETF, Microsoft Research, Google\nResearch, Troy Hunt, ..), so you can concentrate on building. You have custom\nrequirements for your users experience? No problem, implement your own custom\nflows without hassle."),(0,s.kt)("p",null,(0,s.kt)("img",{parentName:"p",src:"https://raw.githubusercontent.com/ory/meta/master/static/logos/logo-hydra.svg",alt:"Ory Hydra"})),(0,s.kt)("p",null,"Ory Hydra enables you to become an OAuth 2.0 and OpenID Connect provider. If\nyou're not writing a basic web app but something that has to work on different\ndevices, that has machine-2-machine interaction, or enables third-party\ndevelopers to use your API (and pay for it), then this is what you're looking\nfor. Ory Hydra is not identity management, though. Instead, it connects to your\nexisting identity management (e.g. the one from the paragraph above, or your\nMySQL+PHP login service, or your Federated SAML SSO) and is capable of issuing,\nin a secure and OpenID Certified manner, access, refresh, and ID tokens. Of\ncourse, it's shipped as a 5MB Docker Image with almost no configuration\nrequired."),(0,s.kt)("p",null,(0,s.kt)("img",{parentName:"p",src:"https://raw.githubusercontent.com/ory/meta/master/static/logos/logo-oathkeeper.svg",alt:"Ory Oathkeeper"})),(0,s.kt)("p",null,'Now that your users access your application through, for example, a\nReact/Angular app and a REST api, you need a way to authenticate the user and to\ncheck if he/she has the necessary permissions (we call this "access control"\nfrom now on). One way would be, of course, to add these checks in your code.\nAnother is to deploy the 5MB Ory Oathkeeper Docker Image, define access rules\nfor your API endpoints (e.g. OAuth 2.0 Access Token + certain set of\npermissions, a valid JSON Web Token, a valid SAML assertion, ...) and put it -\nlike a firewall - in front of your services.'),(0,s.kt)("p",null,(0,s.kt)("img",{parentName:"p",src:"https://raw.githubusercontent.com/ory/meta/master/static/logos/logo-keto.svg",alt:"Ory Keto"})),(0,s.kt)("p",null,"You might start out with a simple permission system. You've got different roles:\nanonymous users (not logged in), authenticated users (logged in), and\nadministrators. At some point however, the system gets more complex. You want to\ndistinguish permissions based on the user's organization, the access time (think\ntime lock in banking), or the billing plan he/she's on. Big cloud providers such\nas Amazon Web Services or Google solve this using \"Access Control Policies\".\nThese policies represent flexible rules and allow you to express complex access\ncontrol scenarios. You could, of course, write your own system or spend a bit of\ntime educating yourself about RBAC, ACL, ABAC, ACP - or (you probably already\nguessed it) - boot up the 5MB Ory Keto Docker Image. Ory Keto is able to\nauthenticate different types of credentials (e.g. OAuth 2.0 Access Tokens, SAML\nAssertions, JSON Web Tokens, ...) and allows you to define advanced permission\nrules (\"Access Control Policies\"). And there's of course an endpoint that tells\nyou if a certain set of credentials (e.g. an OAuth 2.0 Access Token) is allowed\nto modify that blog post."),(0,s.kt)("img",{alt:"The full Ory Ecosystem",src:(0,a.Z)("img/docs/ory-ecosystem.png")}),(0,s.kt)("p",null,"If you were to use the full Ory Ecosystem, it would probably look something like\nthis. Keep in mind that any component shown here can be replaced or removed,\ndepending on your use case."),(0,s.kt)("p",null,"Now you know what this ecosystem has to offer you. To get some more information\non the services, read the developer guide by selecting the software of your\nchoice from the navigation on the left!"),(0,s.kt)("p",null,"Contact us at ",(0,s.kt)("a",{parentName:"p",href:"mailto:hi@ory.sh"},"hi@ory.sh")," if you need consulting with your\nspecific project."))}m.isMDXComponent=!0}}]);