{"action":"created","comment":{"url":"https://api.github.com/repos/inverse-inc/packetfence/pulls/comments/36230481","id":36230481,"diff_hunk":"@@ -0,0 +1,381 @@\n+Microsoft PKI (MSPKI) Quick Installation Guide\n+==============================================\n+:encoding: UTF-8\n+:lang: en\n+:doctype: book\n+\n+include::includes/global-attributes.asciidoc[]\n+\n+About this Guide\n+----------------\n+\n+This guide has been created to give a quick start to configure the Microsoft PKI with PacketFence 5.4+. This guide does not include advanced troubleshooting of EAP-TLS connections. Refer to the relevant documentation of EAP-TLS, RADIUS and OpenSSL for advanced features.\n+\n+Assumptions\n+-----------\n+\n+* You have at least one server with PacketFence 5.4 or later.\n+* The server already has a properly configured switch with 802.1X support.\n+* The PacketFence RADIUS server is working in your environment.\n+* You have a Microsoft Windows 2008 R2 Entreprise server installed.\n+* In this guide you will see a lot of use of <ServerDNSName>, most of the MSPKI services requires in their configuration to use the FQDN of the server and not his IP.\n+* The PacketFence management IP will be 192.168.1.5.\n+* The RADIUS shared secret is \"useStrongerSecret\".\n+\n+Installation\n+------------\n+\n+Step 1: Install Active Directory Certificate Service (ADCS)\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+\n+NOTE: This will cover the configuration for Active Directory Certificate Services (ADCS) on Microsoft Windows 2008 R2 Entreprise. This configuration has been tested to be integreted with PacketFence. The installation of ADCS is not cover by this guide see the Microsoft white paper about it for more information (http://social.technet.microsoft.com/wiki/contents/articles/9063.network-device-enrollment-service-ndes-in-active-directory-certificate-services-ad-cs.aspx).\n+\n+For the integration with PacketFence the following subroles need to be installed in ADCS:\n+\n+* Certification Authorithy Web Enrollment\n+* Network Device Enrollment Service\n+* Online Responder\n+\n+Before start the configuration, a hotfix is necessary due to a Microsft issue. After restarting the service ADCS, the server cannot enroll new certificate with the error message: \"The RPC Server is unavailable\". The hotfix is available here: https://support.microsoft.com/en-us/kb/2633200\n+\n+Communication between MSPKI and PacketFence will be using port 80 with this configuration.\n+\n+Configuring Network Device Enrollement Service (NDES)\n+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n+\n+NOTE: In this guide you will see a lot of use of <ServerDNSName>, most of the MSPKI services requires in their configuration to use the FQDN of the server and not his IP.\n+\n+Our main activity in the deployment of ADCS is to configure Network Enrollement Device Service (NDES) which will allow us to exchange certificate with the MS PKI server via Simple Certificate Exchange Protocol (SCEP).\n+\n+Every configuration change has to be done by an account with administrative privileges.\n+\n+To allow the use of NDES as a Pki-Provider in BOYD deployement there is multiple changes.\n+\n+Challenge Password\n+^^^^^^^^^^^^^^^^^^\n+\n+MSCEP include by default a challenge password, which is unique and dynamically generated for each device which want to enroll on the system. The issue here while using the challenge password is that it is necessary for an administrator to connect to the NDES server from the user's device. This a barrier to BOYD deployement for instance, where you want the user to be able to register himself his device. Since we use NDES with PacketFence, our security to obtain a certificate would be the credentials necessary to access the enrollement system.\n+\n+To disable the challenge password you need to modifiy the following key in the Windows registry. \n+\n+Click `Start` and enter `regedit`.\n+\n+Navigate to `Computer` > `HKEY_LOCAL_MACHINE` > `SOFTWARE` > `Microsoft` > `Cryptography` > `MSCEP` > `EnforcePassword`.\n+\n+Change the value of `EnforcePassword` to `0` (default is `1`).\n+\n+Extend URL length for the request\n+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n+\n+Best practices from Cisco recommand to extend the URL length to avoid issue with longer request. \n+\n+To do so, enter the following command in the CLI on the NDES server:\n+\n+ %systemroot%\\system32\\inetsrv\\appcmd.exe set config /section:system.webServer/\n+ security/requestFiltering /requestLimits.maxQueryString:\"16384\" /commit:apphost\n+\n+Certificate template\n+^^^^^^^^^^^^^^^^^^^^\n+\n+NOTE: Remember that the validity of your CA can impact your whole certificate architecture.\n+\n+The main goal is to deliver certificate for `user Authentication`, this mean we have to setup a specific template.\n+\n+First, the certificate template need at least the following `Enhanced Key Usage` and `Key Usage`:\n+\n+image::docs/images/scep-ms-pki-en-key-usage.png[scaledwidth=\"100%\",alt=\"Mandatory Enhanced Key Usage\"]\n+\n+image::docs/images/scep-ms-pki-key-usage.png[scaledwidth=\"100%\",alt=\"Mandatory Key Usage\"]\n+\n+Since we will duplicate a template, those `Key Usage`, and `Enhanced Key Usage` are already configured. We advise to duplicate the template `User` and change the necessary settings.\n+\n+To duplicate the template, you need to navigate through `Server Manager` > `Roles` > `Active Directory Certificates Services` > `Certificate templates`. Now right click the template `User` and select `Duplicate this template`.\n+\n+Once duplicated, right click your new template, go to `Properties`. Navigate to the tab `Subject Name`. Make sure to select `Supplied in the request` over `Built from information in Active Directory`, else the requested CN will be overwritten by NDES.\n+\n+To allow NDES to use this template you need to navigate to `Server Manager` > `Roles` > `Active Directory Certificates Services` > expand `YourServerName`, right click `Certificate template` and chose `New template to issue`, in the list select your newly created template.\n+\n+Now that you chose the template to deliver you need to configure it in the registry.\n+\n+For the registry, press `Start` and type `regedit` in the search bar.\n+\n+While in the registry navigate to `Computer` > `HKEY_LOCAL_MACHINE` > `SOFTWARE` > `Microsoft` > `Cryptography` > `MSCEP`.\n+\n+Here you should have a list of three keys entries: \n+\n+* EncryptionTemplate,\n+* GeneralPurposeTemplate,\n+* SignatureTemplate.\n+\n+Replace each value with our newly created template. The default value should be `IPSECIntermediateOffline`.\n+\n+You now need to reboot the NDES server to apply changes to the registry.\n+\n+IIS configuration\n+^^^^^^^^^^^^^^^^^\n+\n+The use of SCEP with PacketFence also require a change in the IIS configuration.\n+\n+Navigate to `Server Manager` > `Web(IIS)` > expand `Default web site` > select `CertSrv` > `mscep`. Select `Authentication`, and double click `Anonymous Authentication`. Make sure that `Application pool identity` is selected.\n+\n+Online Certificate Status Protocol (OCSP)\n+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n+\n+For the configuration of OCSP, there are small changes to apply.\n+\n+First we need to allow the use of the template \"OCSPResponseSigning\" by the server, to do so navigate to `Server Manager` > `Roles` > `Active Directory Certificates Services` > expand `YourServerName`, right click `Certificate template` and chose `New template to issue`, in the list select \"OCSPResponseSigning\".\n+\n+After the installation of OCSP we need to create a \"Revocation Configuration\".\n+\n+To create the \"Revocation Configuration\" navigate to `Server Manager` > `Roles` > `Active Directory Certificate Services` and expand `OnlineResponder`. Then expand `YourServerName`, right click on \"Revocation Configuration\", select `Add Revocation Configuration`, click `Next`, chose a name for your configuration and click `Next`. \n+\n+Chose `Select a certificate for an existing entreprise CA`, click `Next`. Click `Browse` and find your entreprise CA in the list, select it, click `OK` and then `Next`. Chose `Automatically select a signing certificate`, make sure `Auto-Enroll for an OCSP signing certificate` is selected, then chose the default template of OCSP which is `OCSPResponseSigning` in the drop down list next to `Certificate Template:`. You need to add providers only if you whish to use some CRL in addition to OCSP.","path":"docs/PacketFence_MSPKI_Quick_Install_Guide.asciidoc","position":132,"original_position":132,"commit_id":"450ac1e0084015c136d260748d7e3be713045c4c","original_commit_id":"450ac1e0084015c136d260748d7e3be713045c4c","user":{"login":"jrouzierinverse","id":2727473,"avatar_url":"https://avatars.githubusercontent.com/u/2727473?v=3","gravatar_id":"","url":"https://api.github.com/users/jrouzierinverse","html_url":"https://github.com/jrouzierinverse","followers_url":"https://api.github.com/users/jrouzierinverse/followers","following_url":"https://api.github.com/users/jrouzierinverse/following{/other_user}","gists_url":"https://api.github.com/users/jrouzierinverse/gists{/gist_id}","starred_url":"https://api.github.com/users/jrouzierinverse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jrouzierinverse/subscriptions","organizations_url":"https://api.github.com/users/jrouzierinverse/orgs","repos_url":"https://api.github.com/users/jrouzierinverse/repos","events_url":"https://api.github.com/users/jrouzierinverse/events{/privacy}","received_events_url":"https://api.github.com/users/jrouzierinverse/received_events","type":"User","site_admin":false},"body":"Unless it is a turkey sandwich ","created_at":"2015-08-04T19:23:53Z","updated_at":"2015-08-04T19:23:53Z","html_url":"https://github.com/inverse-inc/packetfence/pull/810#discussion_r36230481","pull_request_url":"https://api.github.com/repos/inverse-inc/packetfence/pulls/810","_links":{"self":{"href":"https://api.github.com/repos/inverse-inc/packetfence/pulls/comments/36230481"},"html":{"href":"https://github.com/inverse-inc/packetfence/pull/810#discussion_r36230481"},"pull_request":{"href":"https://api.github.com/repos/inverse-inc/packetfence/pulls/810"}}},"pull_request":{"url":"https://api.github.com/repos/inverse-inc/packetfence/pulls/810","id":40949046,"html_url":"https://github.com/inverse-inc/packetfence/pull/810","diff_url":"https://github.com/inverse-inc/packetfence/pull/810.diff","patch_url":"https://github.com/inverse-inc/packetfence/pull/810.patch","issue_url":"https://api.github.com/repos/inverse-inc/packetfence/issues/810","number":810,"state":"open","locked":false,"title":"Added MSPKI guide","user":{"login":"whitx","id":9321079,"avatar_url":"https://avatars.githubusercontent.com/u/9321079?v=3","gravatar_id":"","url":"https://api.github.com/users/whitx","html_url":"https://github.com/whitx","followers_url":"https://api.github.com/users/whitx/followers","following_url":"https://api.github.com/users/whitx/following{/other_user}","gists_url":"https://api.github.com/users/whitx/gists{/gist_id}","starred_url":"https://api.github.com/users/whitx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/whitx/subscriptions","organizations_url":"https://api.github.com/users/whitx/orgs","repos_url":"https://api.github.com/users/whitx/repos","events_url":"https://api.github.com/users/whitx/events{/privacy}","received_events_url":"https://api.github.com/users/whitx/received_events","type":"User","site_admin":false},"body":"# Description\r\nDocumentation for MSPKI integration with PacketFence\r\n\r\n# Impacts\r\nNone\r\n\r\n# Dependencies\r\nbranch feature/scep-pki to be merged\r\n\r\n# Delete branch after merge\r\nYES\r\n\r\n# NEWS file entries\r\n* Documentation for the inegration of MSPKI with PacketFence","created_at":"2015-07-27T21:03:04Z","updated_at":"2015-08-04T19:23:53Z","closed_at":null,"merged_at":null,"merge_commit_sha":"8c72224e59ce00cb17b3a52ef759c91bd04b7a00","assignee":{"login":"julsemaan","id":3857942,"avatar_url":"https://avatars.githubusercontent.com/u/3857942?v=3","gravatar_id":"","url":"https://api.github.com/users/julsemaan","html_url":"https://github.com/julsemaan","followers_url":"https://api.github.com/users/julsemaan/followers","following_url":"https://api.github.com/users/julsemaan/following{/other_user}","gists_url":"https://api.github.com/users/julsemaan/gists{/gist_id}","starred_url":"https://api.github.com/users/julsemaan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/julsemaan/subscriptions","organizations_url":"https://api.github.com/users/julsemaan/orgs","repos_url":"https://api.github.com/users/julsemaan/repos","events_url":"https://api.github.com/users/julsemaan/events{/privacy}","received_events_url":"https://api.github.com/users/julsemaan/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/inverse-inc/packetfence/milestones/9","html_url":"https://github.com/inverse-inc/packetfence/milestones/PacketFence-5.4","labels_url":"https://api.github.com/repos/inverse-inc/packetfence/milestones/9/labels","id":1185948,"number":9,"title":"PacketFence-5.4","description":"","creator":{"login":"louismunro","id":193997,"avatar_url":"https://avatars.githubusercontent.com/u/193997?v=3","gravatar_id":"","url":"https://api.github.com/users/louismunro","html_url":"https://github.com/louismunro","followers_url":"https://api.github.com/users/louismunro/followers","following_url":"https://api.github.com/users/louismunro/following{/other_user}","gists_url":"https://api.github.com/users/louismunro/gists{/gist_id}","starred_url":"https://api.github.com/users/louismunro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/louismunro/subscriptions","organizations_url":"https://api.github.com/users/louismunro/orgs","repos_url":"https://api.github.com/users/louismunro/repos","events_url":"https://api.github.com/users/louismunro/events{/privacy}","received_events_url":"https://api.github.com/users/louismunro/received_events","type":"User","site_admin":false},"open_issues":59,"closed_issues":8,"state":"open","created_at":"2015-06-29T19:23:15Z","updated_at":"2015-08-04T19:10:17Z","due_on":"2015-09-14T04:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/inverse-inc/packetfence/pulls/810/commits","review_comments_url":"https://api.github.com/repos/inverse-inc/packetfence/pulls/810/comments","review_comment_url":"https://api.github.com/repos/inverse-inc/packetfence/pulls/comments{/number}","comments_url":"https://api.github.com/repos/inverse-inc/packetfence/issues/810/comments","statuses_url":"https://api.github.com/repos/inverse-inc/packetfence/statuses/450ac1e0084015c136d260748d7e3be713045c4c","head":{"label":"inverse-inc:feature/doc-mspki","ref":"feature/doc-mspki","sha":"450ac1e0084015c136d260748d7e3be713045c4c","user":{"login":"inverse-inc","id":1203154,"avatar_url":"https://avatars.githubusercontent.com/u/1203154?v=3","gravatar_id":"","url":"https://api.github.com/users/inverse-inc","html_url":"https://github.com/inverse-inc","followers_url":"https://api.github.com/users/inverse-inc/followers","following_url":"https://api.github.com/users/inverse-inc/following{/other_user}","gists_url":"https://api.github.com/users/inverse-inc/gists{/gist_id}","starred_url":"https://api.github.com/users/inverse-inc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/inverse-inc/subscriptions","organizations_url":"https://api.github.com/users/inverse-inc/orgs","repos_url":"https://api.github.com/users/inverse-inc/repos","events_url":"https://api.github.com/users/inverse-inc/events{/privacy}","received_events_url":"https://api.github.com/users/inverse-inc/received_events","type":"Organization","site_admin":false},"repo":{"id":3595658,"name":"packetfence","full_name":"inverse-inc/packetfence","owner":{"login":"inverse-inc","id":1203154,"avatar_url":"https://avatars.githubusercontent.com/u/1203154?v=3","gravatar_id":"","url":"https://api.github.com/users/inverse-inc","html_url":"https://github.com/inverse-inc","followers_url":"https://api.github.com/users/inverse-inc/followers","following_url":"https://api.github.com/users/inverse-inc/following{/other_user}","gists_url":"https://api.github.com/users/inverse-inc/gists{/gist_id}","starred_url":"https://api.github.com/users/inverse-inc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/inverse-inc/subscriptions","organizations_url":"https://api.github.com/users/inverse-inc/orgs","repos_url":"https://api.github.com/users/inverse-inc/repos","events_url":"https://api.github.com/users/inverse-inc/events{/privacy}","received_events_url":"https://api.github.com/users/inverse-inc/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/inverse-inc/packetfence","description":"PacketFence is a fully supported, trusted, Free and Open Source network access control (NAC) solution. Boasting an impressive feature set including a captive-portal for registration and remediation, centralized wired and wireless management, powerful guest management options, 802.1X support, layer-2 isolation of problematic devices; PacketFence can be used to effectively secure networks small to very large heterogeneous networks.","fork":false,"url":"https://api.github.com/repos/inverse-inc/packetfence","forks_url":"https://api.github.com/repos/inverse-inc/packetfence/forks","keys_url":"https://api.github.com/repos/inverse-inc/packetfence/keys{/key_id}","collaborators_url":"https://api.github.com/repos/inverse-inc/packetfence/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/inverse-inc/packetfence/teams","hooks_url":"https://api.github.com/repos/inverse-inc/packetfence/hooks","issue_events_url":"https://api.github.com/repos/inverse-inc/packetfence/issues/events{/number}","events_url":"https://api.github.com/repos/inverse-inc/packetfence/events","assignees_url":"https://api.github.com/repos/inverse-inc/packetfence/assignees{/user}","branches_url":"https://api.github.com/repos/inverse-inc/packetfence/branches{/branch}","tags_url":"https://api.github.com/repos/inverse-inc/packetfence/tags","blobs_url":"https://api.github.com/repos/inverse-inc/packetfence/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/inverse-inc/packetfence/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/inverse-inc/packetfence/git/refs{/sha}","trees_url":"https://api.github.com/repos/inverse-inc/packetfence/git/trees{/sha}","statuses_url":"https://api.github.com/repos/inverse-inc/packetfence/statuses/{sha}","languages_url":"https://api.github.com/repos/inverse-inc/packetfence/languages","stargazers_url":"https://api.github.com/repos/inverse-inc/packetfence/stargazers","contributors_url":"https://api.github.com/repos/inverse-inc/packetfence/contributors","subscribers_url":"https://api.github.com/repos/inverse-inc/packetfence/subscribers","subscription_url":"https://api.github.com/repos/inverse-inc/packetfence/subscription","commits_url":"https://api.github.com/repos/inverse-inc/packetfence/commits{/sha}","git_commits_url":"https://api.github.com/repos/inverse-inc/packetfence/git/commits{/sha}","comments_url":"https://api.github.com/repos/inverse-inc/packetfence/comments{/number}","issue_comment_url":"https://api.github.com/repos/inverse-inc/packetfence/issues/comments{/number}","contents_url":"https://api.github.com/repos/inverse-inc/packetfence/contents/{+path}","compare_url":"https://api.github.com/repos/inverse-inc/packetfence/compare/{base}...{head}","merges_url":"https://api.github.com/repos/inverse-inc/packetfence/merges","archive_url":"https://api.github.com/repos/inverse-inc/packetfence/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/inverse-inc/packetfence/downloads","issues_url":"https://api.github.com/repos/inverse-inc/packetfence/issues{/number}","pulls_url":"https://api.github.com/repos/inverse-inc/packetfence/pulls{/number}","milestones_url":"https://api.github.com/repos/inverse-inc/packetfence/milestones{/number}","notifications_url":"https://api.github.com/repos/inverse-inc/packetfence/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/inverse-inc/packetfence/labels{/name}","releases_url":"https://api.github.com/repos/inverse-inc/packetfence/releases{/id}","created_at":"2012-03-01T20:21:13Z","updated_at":"2015-08-04T14:25:03Z","pushed_at":"2015-08-04T19:05:08Z","git_url":"git://github.com/inverse-inc/packetfence.git","ssh_url":"git@github.com:inverse-inc/packetfence.git","clone_url":"https://github.com/inverse-inc/packetfence.git","svn_url":"https://github.com/inverse-inc/packetfence","homepage":"http://www.packetfence.org","size":164148,"stargazers_count":129,"watchers_count":129,"language":"Perl","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":67,"mirror_url":null,"open_issues_count":162,"forks":67,"open_issues":162,"watchers":129,"default_branch":"devel"}},"base":{"label":"inverse-inc:devel","ref":"devel","sha":"e9a223927fe2508b8366929e267a5173564e939b","user":{"login":"inverse-inc","id":1203154,"avatar_url":"https://avatars.githubusercontent.com/u/1203154?v=3","gravatar_id":"","url":"https://api.github.com/users/inverse-inc","html_url":"https://github.com/inverse-inc","followers_url":"https://api.github.com/users/inverse-inc/followers","following_url":"https://api.github.com/users/inverse-inc/following{/other_user}","gists_url":"https://api.github.com/users/inverse-inc/gists{/gist_id}","starred_url":"https://api.github.com/users/inverse-inc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/inverse-inc/subscriptions","organizations_url":"https://api.github.com/users/inverse-inc/orgs","repos_url":"https://api.github.com/users/inverse-inc/repos","events_url":"https://api.github.com/users/inverse-inc/events{/privacy}","received_events_url":"https://api.github.com/users/inverse-inc/received_events","type":"Organization","site_admin":false},"repo":{"id":3595658,"name":"packetfence","full_name":"inverse-inc/packetfence","owner":{"login":"inverse-inc","id":1203154,"avatar_url":"https://avatars.githubusercontent.com/u/1203154?v=3","gravatar_id":"","url":"https://api.github.com/users/inverse-inc","html_url":"https://github.com/inverse-inc","followers_url":"https://api.github.com/users/inverse-inc/followers","following_url":"https://api.github.com/users/inverse-inc/following{/other_user}","gists_url":"https://api.github.com/users/inverse-inc/gists{/gist_id}","starred_url":"https://api.github.com/users/inverse-inc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/inverse-inc/subscriptions","organizations_url":"https://api.github.com/users/inverse-inc/orgs","repos_url":"https://api.github.com/users/inverse-inc/repos","events_url":"https://api.github.com/users/inverse-inc/events{/privacy}","received_events_url":"https://api.github.com/users/inverse-inc/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/inverse-inc/packetfence","description":"PacketFence is a fully supported, trusted, Free and Open Source network access control (NAC) solution. Boasting an impressive feature set including a captive-portal for registration and remediation, centralized wired and wireless management, powerful guest management options, 802.1X support, layer-2 isolation of problematic devices; PacketFence can be used to effectively secure networks small to very large heterogeneous networks.","fork":false,"url":"https://api.github.com/repos/inverse-inc/packetfence","forks_url":"https://api.github.com/repos/inverse-inc/packetfence/forks","keys_url":"https://api.github.com/repos/inverse-inc/packetfence/keys{/key_id}","collaborators_url":"https://api.github.com/repos/inverse-inc/packetfence/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/inverse-inc/packetfence/teams","hooks_url":"https://api.github.com/repos/inverse-inc/packetfence/hooks","issue_events_url":"https://api.github.com/repos/inverse-inc/packetfence/issues/events{/number}","events_url":"https://api.github.com/repos/inverse-inc/packetfence/events","assignees_url":"https://api.github.com/repos/inverse-inc/packetfence/assignees{/user}","branches_url":"https://api.github.com/repos/inverse-inc/packetfence/branches{/branch}","tags_url":"https://api.github.com/repos/inverse-inc/packetfence/tags","blobs_url":"https://api.github.com/repos/inverse-inc/packetfence/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/inverse-inc/packetfence/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/inverse-inc/packetfence/git/refs{/sha}","trees_url":"https://api.github.com/repos/inverse-inc/packetfence/git/trees{/sha}","statuses_url":"https://api.github.com/repos/inverse-inc/packetfence/statuses/{sha}","languages_url":"https://api.github.com/repos/inverse-inc/packetfence/languages","stargazers_url":"https://api.github.com/repos/inverse-inc/packetfence/stargazers","contributors_url":"https://api.github.com/repos/inverse-inc/packetfence/contributors","subscribers_url":"https://api.github.com/repos/inverse-inc/packetfence/subscribers","subscription_url":"https://api.github.com/repos/inverse-inc/packetfence/subscription","commits_url":"https://api.github.com/repos/inverse-inc/packetfence/commits{/sha}","git_commits_url":"https://api.github.com/repos/inverse-inc/packetfence/git/commits{/sha}","comments_url":"https://api.github.com/repos/inverse-inc/packetfence/comments{/number}","issue_comment_url":"https://api.github.com/repos/inverse-inc/packetfence/issues/comments{/number}","contents_url":"https://api.github.com/repos/inverse-inc/packetfence/contents/{+path}","compare_url":"https://api.github.com/repos/inverse-inc/packetfence/compare/{base}...{head}","merges_url":"https://api.github.com/repos/inverse-inc/packetfence/merges","archive_url":"https://api.github.com/repos/inverse-inc/packetfence/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/inverse-inc/packetfence/downloads","issues_url":"https://api.github.com/repos/inverse-inc/packetfence/issues{/number}","pulls_url":"https://api.github.com/repos/inverse-inc/packetfence/pulls{/number}","milestones_url":"https://api.github.com/repos/inverse-inc/packetfence/milestones{/number}","notifications_url":"https://api.github.com/repos/inverse-inc/packetfence/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/inverse-inc/packetfence/labels{/name}","releases_url":"https://api.github.com/repos/inverse-inc/packetfence/releases{/id}","created_at":"2012-03-01T20:21:13Z","updated_at":"2015-08-04T14:25:03Z","pushed_at":"2015-08-04T19:05:08Z","git_url":"git://github.com/inverse-inc/packetfence.git","ssh_url":"git@github.com:inverse-inc/packetfence.git","clone_url":"https://github.com/inverse-inc/packetfence.git","svn_url":"https://github.com/inverse-inc/packetfence","homepage":"http://www.packetfence.org","size":164148,"stargazers_count":129,"watchers_count":129,"language":"Perl","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":67,"mirror_url":null,"open_issues_count":162,"forks":67,"open_issues":162,"watchers":129,"default_branch":"devel"}},"_links":{"self":{"href":"https://api.github.com/repos/inverse-inc/packetfence/pulls/810"},"html":{"href":"https://github.com/inverse-inc/packetfence/pull/810"},"issue":{"href":"https://api.github.com/repos/inverse-inc/packetfence/issues/810"},"comments":{"href":"https://api.github.com/repos/inverse-inc/packetfence/issues/810/comments"},"review_comments":{"href":"https://api.github.com/repos/inverse-inc/packetfence/pulls/810/comments"},"review_comment":{"href":"https://api.github.com/repos/inverse-inc/packetfence/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/inverse-inc/packetfence/pulls/810/commits"},"statuses":{"href":"https://api.github.com/repos/inverse-inc/packetfence/statuses/450ac1e0084015c136d260748d7e3be713045c4c"}}}}