{"id":87546,"date":"2019-01-31T10:00:48","date_gmt":"2019-01-31T08:00:48","guid":{"rendered":"https:\/\/www.javacodegeeks.com\/?p=87546"},"modified":"2019-01-30T11:35:09","modified_gmt":"2019-01-30T09:35:09","slug":"spiffe-nutshell","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2019\/01\/spiffe-nutshell.html","title":{"rendered":"SPIFFE in a Nutshell"},"content":{"rendered":"<p>I have been studying SPIFEE(Secure Production Identity Framework For Everyone)[1] for sometime and here I am drafting the flow as I have understand now, for the benefit of anyone else trying to understand the flow.&nbsp;<\/p>\n<ul class=\"wp-block-list\">\n<li><b>Identity Registry<\/b> &#8211; SPIRE server has a own identity registry which keeps two coarse-grained attributes that decides how the SPIFFE IDs will be issued to a workload. It keeps details as in the below table.<\/li>\n<\/ul>\n<table class=\"wp-block-table\">\n<tbody>\n<tr>\n<td>\n<p>SPIFFE ID<\/p>\n<\/td>\n<td>\n<p>Node Selector<\/p>\n<\/td>\n<td>\n<p>Process Selector<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>spiffe:\/\/abc.com\/bill<\/p>\n<\/td>\n<td>\n<p>aws:ec2:1234<\/p>\n<\/td>\n<td>\n<p>k8s:namespace:1234<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>spiffe:\/\/xyz.com\/account<\/p>\n<\/td>\n<td>\n<p>token:7236427472<\/p>\n<\/td>\n<td>\n<p>unix:uid:1002<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>A separate registration API is provided to manage these entries in the identity registry.<\/p>\n<ul class=\"wp-block-list\">\n<li><b>Node Selector<\/b> &#8211; This defines a machine (physical or virtual) where a workload can be running on. The exact type of selector to be used is decided based on the infrastructure provider (AWS, GCP, bare metal) that the workload is running. Eg. AWS EC2 Instance ID, a serial number of a physical machine. Node attestor act based on the infrastructure provider to honor there selectors.<\/li>\n<li><b>Workload Selector<\/b> &#8211; This defines how to identify a process as representing a workload, after the node is identified. This can be described in terms of attributes of the process itself (eg. Linux UID) or in terms of indirect attributes such as a kubernetes namespace. Node agent is responsible to verify that a particular process on a machine qualifies for it\u2019s workload selector. Workload attestor act based on the process attributes to honor the process selectors.<\/li>\n<li><b>SPIRE Node Agent<\/b> &#8211; A process that sits on the node, verifies the provenance of workloads running on the node, and provides those workloads with certificates via the Workload API, based on the selectors.<\/li>\n<\/ul>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img decoding=\"async\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/01\/Document-1-1024x765.png\" alt=\"SPIFFE\" class=\"wp-image-87565\" width=\"820\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/01\/Document-1-1024x765.png 1024w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/01\/Document-1-300x224.png 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/01\/Document-1-768x574.png 768w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2019\/01\/Document-1.png 1550w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n<ol class=\"wp-block-list\">\n<li>Registration API is called by either an administrator or a third party application to populate the identity registry with the required SPIFFE IDs and relevant selectors.<\/li>\n<li>Node agent get authenticated with the SPIRE server using a pre-established cryptographic key pair or based in the infrastructure provider. For example in the case of AWS EC2, node agent will submit the node\u2019s Instance Identification Document(IID) issued by AWS.<\/li>\n<li>Node attestor in the SPIRE server validates the provided identification document based on the used mechanism. If the AWS IID is used, the relevant attestor will validate it with AWS settings. Upon successful validation SPIRE server sends back a set of SPIFFE IDs that can be issued to the node along with their process selector policies.<\/li>\n<li>When workload start to run in the node, it first make a call to the node agent asking \u2018who am I?\u2019.&nbsp;<\/li>\n<li>Based on the process selectors node agent received in the previous step, and using the workload attestors, agent decides on the SPIFFE ID to be given to workload. It generates a key pair based on that and sends the CSR(Certificate Signing Request) to the SPIRE server.<\/li>\n<li>SPIRE server responds to the node agent with the signed SVID for the workload along with the trust bundles, indicating which other loads can be trusted by this workload.<\/li>\n<li>Upon receiving the response from SPIRE server, node agent, handover the received SVID, trust bundles the generated private key to the workload. This private key never leave the node it\u2019s workload belongs to.<\/li>\n<\/ol>\n<p>Please feel free to suggest any correction, if you notice.<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<p>[1] &#8211; https:\/\/spiffe.io<\/p>\n<p>[2] &#8211; https:\/\/docs.google.com\/document\/d\/1RZnBfj8I5xs8Yi_BPEKBRp0K3UnIJYTDg_31rfTt4j8\/edit#<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td>\n<p>Published on Java Code Geeks with permission by Pushpalanka, partner at our <a href=\"\/\/www.javacodegeeks.com\/join-us\/jcg\/\" target=\"_blank\" rel=\"noopener\">JCG program<\/a>. See the original article here: <a href=\"http:\/\/pushpalankajaya.blogspot.com\/2019\/01\/spiffe-in-nutshell.html\" target=\"_blank\" rel=\"noopener\">SPIFFE in a Nutshell<\/a><\/p>\n<p>Opinions expressed by Java Code Geeks contributors are their own.<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>I have been studying SPIFEE(Secure Production Identity Framework For Everyone)[1] for sometime and here I am drafting the flow as I have understand now, for the benefit of anyone else trying to understand the flow.&nbsp; Identity Registry &#8211; SPIRE server has a own identity registry which keeps two coarse-grained attributes that decides how the SPIFFE &hellip;<\/p>\n","protected":false},"author":247,"featured_media":112,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-87546","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>SPIFFE in a Nutshell - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"Interested to learn about SPIFFE? Check our article explaining SPIFFE the Secure Production Identity Framework For Everyone.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.javacodegeeks.com\/2019\/01\/spiffe-nutshell.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SPIFFE in a Nutshell - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"Interested to learn about SPIFFE? Check our article explaining SPIFFE the Secure Production Identity Framework For Everyone.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2019\/01\/spiffe-nutshell.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/pushpalanka\" \/>\n<meta property=\"article:published_time\" content=\"2019-01-31T08:00:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Pushpalanka\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/Pushpalanka\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Pushpalanka\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/spiffe-nutshell.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/spiffe-nutshell.html\"},\"author\":{\"name\":\"Pushpalanka\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/f134211f7e70919197fcc190a7974161\"},\"headline\":\"SPIFFE in a Nutshell\",\"datePublished\":\"2019-01-31T08:00:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/spiffe-nutshell.html\"},\"wordCount\":608,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/spiffe-nutshell.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/spiffe-nutshell.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/spiffe-nutshell.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/spiffe-nutshell.html\",\"name\":\"SPIFFE in a Nutshell - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/spiffe-nutshell.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/spiffe-nutshell.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"datePublished\":\"2019-01-31T08:00:48+00:00\",\"description\":\"Interested to learn about SPIFFE? Check our article explaining SPIFFE the Secure Production Identity Framework For Everyone.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/spiffe-nutshell.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/spiffe-nutshell.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/spiffe-nutshell.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"width\":150,\"height\":150,\"caption\":\"java-interview-questions-answers\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2019\\\/01\\\/spiffe-nutshell.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprise Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/enterprise-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"SPIFFE in a Nutshell\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/f134211f7e70919197fcc190a7974161\",\"name\":\"Pushpalanka\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c732f6d647c37f2005ce72c025b595f6f962144daf6a13a885d844dc020a5e94?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c732f6d647c37f2005ce72c025b595f6f962144daf6a13a885d844dc020a5e94?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c732f6d647c37f2005ce72c025b595f6f962144daf6a13a885d844dc020a5e94?s=96&d=mm&r=g\",\"caption\":\"Pushpalanka\"},\"description\":\"Pushpalanka is an undergraduate in Computer Science and Engineering and working on variety of middle-ware solutions. She is an open-source enthusiastic having interests in the fields of Big Data, Distributed Systems and Web Security.She has successfully participated in Google Summer of Code 2012 program.\",\"sameAs\":[\"http:\\\/\\\/pushpalankajaya.blogspot.com\\\/\",\"https:\\\/\\\/www.facebook.com\\\/pushpalanka\",\"http:\\\/\\\/www.linkedin.com\\\/pub\\\/pushpalanka-jayawardhana\\\/21\\\/214\\\/50a\",\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/Pushpalanka\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/pushpalanka\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SPIFFE in a Nutshell - Java Code Geeks","description":"Interested to learn about SPIFFE? Check our article explaining SPIFFE the Secure Production Identity Framework For Everyone.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.javacodegeeks.com\/2019\/01\/spiffe-nutshell.html","og_locale":"en_US","og_type":"article","og_title":"SPIFFE in a Nutshell - Java Code Geeks","og_description":"Interested to learn about SPIFFE? Check our article explaining SPIFFE the Secure Production Identity Framework For Everyone.","og_url":"https:\/\/www.javacodegeeks.com\/2019\/01\/spiffe-nutshell.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_author":"https:\/\/www.facebook.com\/pushpalanka","article_published_time":"2019-01-31T08:00:48+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","type":"image\/jpeg"}],"author":"Pushpalanka","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/Pushpalanka","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Pushpalanka","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2019\/01\/spiffe-nutshell.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2019\/01\/spiffe-nutshell.html"},"author":{"name":"Pushpalanka","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/f134211f7e70919197fcc190a7974161"},"headline":"SPIFFE in a Nutshell","datePublished":"2019-01-31T08:00:48+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2019\/01\/spiffe-nutshell.html"},"wordCount":608,"commentCount":1,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2019\/01\/spiffe-nutshell.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2019\/01\/spiffe-nutshell.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2019\/01\/spiffe-nutshell.html","url":"https:\/\/www.javacodegeeks.com\/2019\/01\/spiffe-nutshell.html","name":"SPIFFE in a Nutshell - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2019\/01\/spiffe-nutshell.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2019\/01\/spiffe-nutshell.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","datePublished":"2019-01-31T08:00:48+00:00","description":"Interested to learn about SPIFFE? Check our article explaining SPIFFE the Secure Production Identity Framework For Everyone.","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2019\/01\/spiffe-nutshell.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2019\/01\/spiffe-nutshell.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2019\/01\/spiffe-nutshell.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","width":150,"height":150,"caption":"java-interview-questions-answers"},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2019\/01\/spiffe-nutshell.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Enterprise Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/enterprise-java"},{"@type":"ListItem","position":4,"name":"SPIFFE in a Nutshell"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/f134211f7e70919197fcc190a7974161","name":"Pushpalanka","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/c732f6d647c37f2005ce72c025b595f6f962144daf6a13a885d844dc020a5e94?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c732f6d647c37f2005ce72c025b595f6f962144daf6a13a885d844dc020a5e94?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c732f6d647c37f2005ce72c025b595f6f962144daf6a13a885d844dc020a5e94?s=96&d=mm&r=g","caption":"Pushpalanka"},"description":"Pushpalanka is an undergraduate in Computer Science and Engineering and working on variety of middle-ware solutions. She is an open-source enthusiastic having interests in the fields of Big Data, Distributed Systems and Web Security.She has successfully participated in Google Summer of Code 2012 program.","sameAs":["http:\/\/pushpalankajaya.blogspot.com\/","https:\/\/www.facebook.com\/pushpalanka","http:\/\/www.linkedin.com\/pub\/pushpalanka-jayawardhana\/21\/214\/50a","https:\/\/x.com\/https:\/\/twitter.com\/Pushpalanka"],"url":"https:\/\/www.javacodegeeks.com\/author\/pushpalanka"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/87546","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/247"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=87546"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/87546\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/112"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=87546"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=87546"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=87546"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}