[smarcet] - Refs # 4577 - Signature verification Request Handle

Dumb Mode
This commit is contained in:
smarcet 2013-10-25 01:16:31 -03:00
parent 19b4ba6111
commit 63aae9b805
43 changed files with 10280 additions and 244 deletions

View File

@ -2,22 +2,40 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="cdc3929b-040d-4e45-bbd9-fa8f8bc87073" name="Default" comment="[smarcet] - Refs #4576, #4578 : XRDS discovery and Authentication Workflow main classes">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/views/profile.blade.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/services/INonceService.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/services/NonceService.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/requests/OpenIdCheckAuthenticationRequest.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/responses/OpenIdCheckAuthenticationResponse.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/app/libs/openid/exceptions/ReplayAttackException.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/storage/.gitkeep" afterPath="$PROJECT_DIR$/app/storage/.gitkeep" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/services/AssociationService.php" afterPath="$PROJECT_DIR$/app/services/AssociationService.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/controllers/DiscoveryController.php" afterPath="$PROJECT_DIR$/app/controllers/DiscoveryController.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/controllers/HomeController.php" afterPath="$PROJECT_DIR$/app/controllers/HomeController.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/services/ITrustedSitesService.php" afterPath="$PROJECT_DIR$/app/libs/openid/services/ITrustedSitesService.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/services/IAssociationService.php" afterPath="$PROJECT_DIR$/app/libs/openid/services/IAssociationService.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/extensions/implementations/OpenIdAXExtension.php" afterPath="$PROJECT_DIR$/app/libs/openid/extensions/implementations/OpenIdAXExtension.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/requests/OpenIdAuthenticationRequest.php" afterPath="$PROJECT_DIR$/app/libs/openid/requests/OpenIdAuthenticationRequest.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/handlers/OpenIdAuthenticationRequestHandler.php" afterPath="$PROJECT_DIR$/app/libs/openid/handlers/OpenIdAuthenticationRequestHandler.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/responses/OpenIdImmediateNegativeAssertion.php" afterPath="$PROJECT_DIR$/app/libs/openid/responses/OpenIdImmediateNegativeAssertion.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/responses/OpenIdNonImmediateNegativeAssertion.php" afterPath="$PROJECT_DIR$/app/libs/openid/responses/OpenIdNonImmediateNegativeAssertion.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/handlers/OpenIdCheckAuthenticationRequestHandler.php" afterPath="$PROJECT_DIR$/app/libs/openid/handlers/OpenIdCheckAuthenticationRequestHandler.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/responses/OpenIdDirectResponse.php" afterPath="$PROJECT_DIR$/app/libs/openid/responses/OpenIdDirectResponse.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/strategies/OpenIdDirectResponseStrategy.php" afterPath="$PROJECT_DIR$/app/strategies/OpenIdDirectResponseStrategy.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/handlers/OpenIdMessageHandler.php" afterPath="$PROJECT_DIR$/app/libs/openid/handlers/OpenIdMessageHandler.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/responses/OpenIdPositiveAssertionResponse.php" afterPath="$PROJECT_DIR$/app/libs/openid/responses/OpenIdPositiveAssertionResponse.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/OpenIdProtocol.php" afterPath="$PROJECT_DIR$/app/libs/openid/OpenIdProtocol.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/requests/OpenIdRequest.php" afterPath="$PROJECT_DIR$/app/libs/openid/requests/OpenIdRequest.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/strategies/OpenIdResponseStrategyFactoryMethod.php" afterPath="$PROJECT_DIR$/app/libs/openid/strategies/OpenIdResponseStrategyFactoryMethod.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/handlers/OpenIdSessionAssociationRequestHandler.php" afterPath="$PROJECT_DIR$/app/libs/openid/handlers/OpenIdSessionAssociationRequestHandler.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/helpers/OpenIdSignatureBuilder.php" afterPath="$PROJECT_DIR$/app/libs/openid/helpers/OpenIdSignatureBuilder.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/models/OpenIdTrustedSite.php" afterPath="$PROJECT_DIR$/app/models/OpenIdTrustedSite.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/auth/OpenIdUser.php" afterPath="$PROJECT_DIR$/app/libs/auth/OpenIdUser.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/services/ServerConfigurationService.php" afterPath="$PROJECT_DIR$/app/services/ServerConfigurationService.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/services/TrustedSitesService.php" afterPath="$PROJECT_DIR$/app/services/TrustedSitesService.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/libs/openid/responses/contexts/ResponseContext.php" afterPath="$PROJECT_DIR$/app/libs/openid/responses/contexts/ResponseContext.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/services/ServicesProvider.php" afterPath="$PROJECT_DIR$/app/services/ServicesProvider.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/controllers/UserController.php" afterPath="$PROJECT_DIR$/app/controllers/UserController.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/views/consent.blade.php" afterPath="$PROJECT_DIR$/app/views/consent.blade.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/config/app.php" afterPath="$PROJECT_DIR$/app/config/app.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/views/extensions/ax.blade.php" afterPath="$PROJECT_DIR$/app/views/extensions/ax.blade.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/config/dev/database.php" afterPath="$PROJECT_DIR$/app/config/dev/database.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/filters.php" afterPath="$PROJECT_DIR$/app/filters.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/views/home.blade.php" afterPath="$PROJECT_DIR$/app/views/home.blade.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/views/identity.blade.php" afterPath="$PROJECT_DIR$/app/views/identity.blade.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/views/login.blade.php" afterPath="$PROJECT_DIR$/app/views/login.blade.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/views/layout.blade.php" afterPath="$PROJECT_DIR$/app/views/layout.blade.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/views/profile.blade.php" afterPath="$PROJECT_DIR$/app/views/profile.blade.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/app/routes.php" afterPath="$PROJECT_DIR$/app/routes.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
</list>
@ -42,68 +60,103 @@
</component>
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
<component name="FavoritesManager">
<favorites_list name="openidIdp" />
<favorites_list name="openidIdp">
<favorite_root url="file://$PROJECT_DIR$/app/services/ServicesProvider.php" type="psiFile" klass="com.intellij.ide.projectView.impl.nodes.PsiFileNode" />
</favorites_list>
</component>
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="OpenIdTrustedSite.php" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/models/OpenIdTrustedSite.php">
<file leaf-file-name="OpenIdCheckAuthenticationRequestHandler.php" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/libs/openid/handlers/OpenIdCheckAuthenticationRequestHandler.php">
<provider selected="true" editor-type-id="text-editor">
<state line="21" column="29" selection-start="439" selection-end="448" vertical-scroll-proportion="-3.75" vertical-offset="135" max-vertical-offset="555">
<state line="94" column="48" selection-start="4038" selection-end="4038" vertical-scroll-proportion="-3.2916667" vertical-offset="1241" max-vertical-offset="1695">
<folding>
<element signature="e#195#220#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="OpenIdResponseStrategyFactoryMethod.php" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/libs/openid/strategies/OpenIdResponseStrategyFactoryMethod.php">
<provider selected="true" editor-type-id="text-editor">
<state line="31" column="0" selection-start="902" selection-end="902" vertical-scroll-proportion="-3.5" vertical-offset="246" max-vertical-offset="540">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="TrustedSitesService.php" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/services/TrustedSitesService.php">
<file leaf-file-name="OpenIdCheckAuthenticationResponse.php" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/libs/openid/responses/OpenIdCheckAuthenticationResponse.php">
<provider selected="true" editor-type-id="text-editor">
<state line="15" column="53" selection-start="368" selection-end="368" vertical-scroll-proportion="-3.75" vertical-offset="0" max-vertical-offset="690">
<state line="32" column="0" selection-start="1340" selection-end="1340" vertical-scroll-proportion="-4.3333335" vertical-offset="301" max-vertical-offset="540">
<folding>
<element signature="e#120#146#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="OpenIdProviderController.php" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/controllers/OpenIdProviderController.php">
<provider selected="true" editor-type-id="text-editor">
<state line="36" column="0" selection-start="1358" selection-end="1358" vertical-scroll-proportion="-3.7083333" vertical-offset="301" max-vertical-offset="540">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ITrustedSitesService.php" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/libs/openid/services/ITrustedSitesService.php">
<file leaf-file-name="OpenIdProtocol.php" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/libs/openid/OpenIdProtocol.php">
<provider selected="true" editor-type-id="text-editor">
<state line="13" column="30" selection-start="265" selection-end="285" vertical-scroll-proportion="-3.75" vertical-offset="0" max-vertical-offset="345">
<state line="33" column="47" selection-start="1104" selection-end="1104" vertical-scroll-proportion="-3.22" vertical-offset="154" max-vertical-offset="2085">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="UserController.php" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/controllers/UserController.php">
<file leaf-file-name="OpenIdDirectResponseStrategy.php" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/strategies/OpenIdDirectResponseStrategy.php">
<provider selected="true" editor-type-id="text-editor">
<state line="133" column="18" selection-start="5169" selection-end="5174" vertical-scroll-proportion="-8.583333" vertical-offset="1609" max-vertical-offset="1950">
<state line="16" column="0" selection-start="367" selection-end="367" vertical-scroll-proportion="-4.25" vertical-offset="33" max-vertical-offset="285">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="identity.blade.php" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/views/identity.blade.php">
<file leaf-file-name="Controller.php" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Routing/Controllers/Controller.php">
<provider selected="true" editor-type-id="text-editor">
<state line="13" column="10" selection-start="669" selection-end="669" vertical-scroll-proportion="-8.125" vertical-offset="0" max-vertical-offset="315">
<state line="120" column="0" selection-start="2992" selection-end="2992" vertical-scroll-proportion="-3.125" vertical-offset="1665" max-vertical-offset="4590">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="profile.blade.php" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/app/views/profile.blade.php">
<file leaf-file-name="Handler.php" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Exception/Handler.php">
<provider selected="true" editor-type-id="text-editor">
<state line="12" column="142" selection-start="507" selection-end="507" vertical-scroll-proportion="0.6081081" vertical-offset="0" max-vertical-offset="360">
<state line="179" column="0" selection-start="4276" selection-end="4276" vertical-scroll-proportion="-3.5" vertical-offset="2526" max-vertical-offset="5700">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ServerExtensionsService.php" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/services/ServerExtensionsService.php">
<file leaf-file-name="OpenIdDirectResponse.php" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/app/libs/openid/responses/OpenIdDirectResponse.php">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="-0.0" vertical-offset="0" max-vertical-offset="405">
<state line="64" column="0" selection-start="2152" selection-end="2152" vertical-scroll-proportion="0.33333334" vertical-offset="786" max-vertical-offset="1065">
<folding>
<element signature="e#195#233#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="OpenIdSignatureBuilder.php" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/libs/openid/helpers/OpenIdSignatureBuilder.php">
<provider selected="true" editor-type-id="text-editor">
<state line="35" column="0" selection-start="1090" selection-end="1090" vertical-scroll-proportion="-3.2916667" vertical-offset="326" max-vertical-offset="1005">
<folding />
</state>
</provider>
@ -127,22 +180,22 @@
<component name="IdeDocumentHistory">
<option name="changedFiles">
<list>
<option value="$PROJECT_DIR$/app/config/app.php" />
<option value="$PROJECT_DIR$/app/services/ServicesProvider.php" />
<option value="$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Redis/RedisServiceProvider.php" />
<option value="$PROJECT_DIR$/app/libs/openid/handlers/OpenIdAuthenticationRequestHandler.php" />
<option value="$PROJECT_DIR$/app/controllers/DiscoveryController.php" />
<option value="$PROJECT_DIR$/app/views/consent.blade.php" />
<option value="$PROJECT_DIR$/app/views/login.blade.php" />
<option value="$PROJECT_DIR$/app/services/ServerConfigurationService.php" />
<option value="$PROJECT_DIR$/app/libs/auth/OpenIdUser.php" />
<option value="$PROJECT_DIR$/app/views/welcome.blade.php" />
<option value="$PROJECT_DIR$/app/views/home.blade.php" />
<option value="$PROJECT_DIR$/app/routes.php" />
<option value="$PROJECT_DIR$/app/controllers/HomeController.php" />
<option value="$PROJECT_DIR$/app/views/identity.blade.php" />
<option value="$PROJECT_DIR$/app/filters.php" />
<option value="$PROJECT_DIR$/app/services/TrustedSitesService.php" />
<option value="$PROJECT_DIR$/app/libs/openid/services/ITrustedSitesService.php" />
<option value="$PROJECT_DIR$/app/controllers/UserController.php" />
<option value="$PROJECT_DIR$/app/views/profile.blade.php" />
<option value="$PROJECT_DIR$/app/libs/openid/handlers/OpenIdSessionAssociationRequestHandler.php" />
<option value="$PROJECT_DIR$/app/libs/openid/handlers/OpenIdMessageHandler.php" />
<option value="$PROJECT_DIR$/app/libs/openid/handlers/OpenIdCheckAuthenticationRequestHandler.php" />
<option value="$PROJECT_DIR$/app/libs/openid/requests/OpenIdCheckAuthenticationRequest.php" />
<option value="$PROJECT_DIR$/app/services/NonceService.php" />
<option value="$PROJECT_DIR$/app/libs/openid/requests/OpenIdRequest.php" />
<option value="$PROJECT_DIR$/app/libs/openid/responses/OpenIdDirectResponse.php" />
<option value="$PROJECT_DIR$/app/libs/openid/helpers/OpenIdSignatureBuilder.php" />
<option value="$PROJECT_DIR$/app/libs/openid/OpenIdProtocol.php" />
<option value="$PROJECT_DIR$/app/libs/openid/strategies/OpenIdResponseStrategyFactoryMethod.php" />
<option value="$PROJECT_DIR$/app/strategies/OpenIdDirectResponseStrategy.php" />
<option value="$PROJECT_DIR$/app/libs/openid/responses/OpenIdCheckAuthenticationResponse.php" />
</list>
</option>
</component>
@ -150,6 +203,7 @@
<option name="servers">
<server host="dev.openstackid.com" name="dev.openstackid.com" />
<server host="dev.openstack.org" name="dev.openstack.org" use_path_mappings="true" />
<server host="dev.openstackid.com" name="dev.openstackid.com (1)" port="443" />
</option>
</component>
<component name="PhpWorkspaceProjectConfiguration" backward_compatibility_performed="true" interpreter_name="PHP 5.4.13">
@ -282,24 +336,6 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="openidIdp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="openidIdp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="app" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="views" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="openidIdp" />
@ -318,24 +354,6 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="openidIdp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="openidIdp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="app" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="models" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="openidIdp" />
@ -353,6 +371,10 @@
<option name="myItemId" value="libs" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="openid" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
@ -372,7 +394,29 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="auth" />
<option name="myItemId" value="openid" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="requests" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="openidIdp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="openidIdp" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="app" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="libs" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
@ -399,15 +443,17 @@
</panes>
</component>
<component name="PropertiesComponent">
<property name="GoToFile.includeJavaFiles" value="false" />
<property name="options.splitter.main.proportions" value="0.3" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="recentsLimit" value="5" />
<property name="options.lastSelected" value="Configurable.PHP.Debug" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/../../www.openstack.org" />
<property name="recentsLimit" value="5" />
<property name="restartRequiresConfirmation" value="true" />
<property name="options.splitter.details.proportions" value="0.2" />
<property name="options.searchVisible" value="true" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="FullScreen" value="false" />
<property name="GoToClass.includeJavaFiles" value="false" />
<property name="options.searchVisible" value="true" />
<property name="options.splitter.details.proportions" value="0.2" />
</component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
@ -465,7 +511,9 @@
<method />
</configuration>
<configuration default="false" name="dev.openstackid.com" type="PhpWebAppRunConfigurationType" factoryName="PHP Web Application" browser="FIREFOX" server_name="dev.openstackid.com">
<RunnerSettings RunnerId="PhpRunner" />
<RunnerSettings RunnerId="PhpWebAppDebugRunner" />
<ConfigurationWrapper RunnerId="PhpRunner" />
<ConfigurationWrapper RunnerId="PhpWebAppDebugRunner" />
<method />
</configuration>
@ -520,24 +568,24 @@
</component>
<component name="ToolWindowManager">
<frame x="65" y="38" width="1301" height="728" extended-state="0" />
<editor active="true" />
<editor active="false" />
<layout>
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.32871974" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3252595" sideWeight="0.6180945" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3544093" sideWeight="0.38190553" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.30504403" sideWeight="0.67128026" order="0" side_tool="false" content_ui="combo" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.33466774" sideWeight="0.65916955" order="0" side_tool="false" content_ui="combo" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.34083045" sideWeight="0.6180945" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3544093" sideWeight="0.38190553" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3292683" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.32871974" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32871974" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
@ -555,18 +603,6 @@
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<breakpoints>
<line-breakpoint enabled="true" type="php">
<url>file://$PROJECT_DIR$/app/services/TrustedSitesService.php</url>
<line>19</line>
<option name="timeStamp" value="208" />
</line-breakpoint>
<line-breakpoint enabled="true" type="php">
<url>file://$PROJECT_DIR$/app/controllers/DiscoveryController.php</url>
<line>47</line>
<option name="timeStamp" value="211" />
</line-breakpoint>
</breakpoints>
<breakpoints-dialog>
<breakpoints-dialog>
<selected-grouping-rules>
@ -574,119 +610,125 @@
</selected-grouping-rules>
</breakpoints-dialog>
</breakpoints-dialog>
<option name="time" value="214" />
<option name="time" value="288" />
</breakpoint-manager>
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/app/libs/openid/helpers/OpenIdCryptoHelper.php">
<provider selected="true" editor-type-id="text-editor">
<state line="60" column="0" selection-start="1686" selection-end="1686" vertical-scroll-proportion="-12.875" vertical-offset="471" max-vertical-offset="2085">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/libs/openid/responses/OpenIdResponse.php">
<provider selected="true" editor-type-id="text-editor">
<state line="12" column="43" selection-start="265" selection-end="265" vertical-scroll-proportion="-3.75" vertical-offset="0" max-vertical-offset="690">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/libs/openid/OpenIdMessage.php">
<provider selected="true" editor-type-id="text-editor">
<state line="13" column="6" selection-start="240" selection-end="240" vertical-scroll-proportion="1.625" vertical-offset="144" max-vertical-offset="915">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/strategies/OpenIdIndirectResponseStrategy.php">
<provider selected="true" editor-type-id="text-editor">
<state line="18" column="0" selection-start="433" selection-end="433" vertical-scroll-proportion="-3.7083333" vertical-offset="61" max-vertical-offset="300">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Foundation/AliasLoader.php">
<provider selected="true" editor-type-id="text-editor">
<state line="65" column="0" selection-start="1247" selection-end="1247" vertical-scroll-proportion="-3.5" vertical-offset="891" max-vertical-offset="2460">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vendor/composer/ClassLoader.php">
<provider selected="true" editor-type-id="text-editor">
<state line="186" column="0" selection-start="5045" selection-end="5045" vertical-scroll-proportion="-3.2916667" vertical-offset="2591" max-vertical-offset="3660">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/libs/openid/helpers/OpenIdSignatureBuilder.php">
<provider selected="true" editor-type-id="text-editor">
<state line="35" column="0" selection-start="1090" selection-end="1090" vertical-scroll-proportion="-3.2916667" vertical-offset="326" max-vertical-offset="1005">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/controllers/OpenIdProviderController.php">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="540">
<state line="36" column="0" selection-start="1358" selection-end="1358" vertical-scroll-proportion="-3.7083333" vertical-offset="301" max-vertical-offset="540">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/services/ServerConfigurationService.php">
<entry file="file://$PROJECT_DIR$/app/libs/openid/handlers/OpenIdCheckAuthenticationRequestHandler.php">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="46" selection-start="331" selection-end="357" vertical-scroll-proportion="-5.0" vertical-offset="0" max-vertical-offset="570">
<state line="94" column="48" selection-start="4038" selection-end="4038" vertical-scroll-proportion="-3.2916667" vertical-offset="1241" max-vertical-offset="1695">
<folding>
<element signature="e#195#220#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Routing/Controllers/Controller.php">
<provider selected="true" editor-type-id="text-editor">
<state line="120" column="0" selection-start="2992" selection-end="2992" vertical-scroll-proportion="-3.125" vertical-offset="1665" max-vertical-offset="4590">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/controllers/DiscoveryController.php">
<entry file="file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Exception/Handler.php">
<provider selected="true" editor-type-id="text-editor">
<state line="49" column="36" selection-start="1622" selection-end="1747" vertical-scroll-proportion="-2.5" vertical-offset="540" max-vertical-offset="945">
<state line="179" column="0" selection-start="4276" selection-end="4276" vertical-scroll-proportion="-3.5" vertical-offset="2526" max-vertical-offset="5700">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/libs/auth/OpenIdUser.php">
<entry file="file://$PROJECT_DIR$/app/libs/openid/strategies/OpenIdResponseStrategyFactoryMethod.php">
<provider selected="true" editor-type-id="text-editor">
<state line="26" column="2" selection-start="541" selection-end="567" vertical-scroll-proportion="-10.0" vertical-offset="30" max-vertical-offset="1980">
<state line="31" column="0" selection-start="902" selection-end="902" vertical-scroll-proportion="-3.5" vertical-offset="246" max-vertical-offset="540">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/storage/views/02070f752c8d0ddab799e0541a420d29">
<entry file="file://$PROJECT_DIR$/app/libs/openid/OpenIdProtocol.php">
<provider selected="true" editor-type-id="text-editor">
<state line="11" column="12" selection-start="623" selection-end="623" vertical-scroll-proportion="0.0" vertical-offset="20" max-vertical-offset="315">
<state line="33" column="47" selection-start="1104" selection-end="1104" vertical-scroll-proportion="-3.22" vertical-offset="154" max-vertical-offset="2085">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/views/home.blade.php">
<entry file="file://$PROJECT_DIR$/app/libs/openid/responses/OpenIdCheckAuthenticationResponse.php">
<provider selected="true" editor-type-id="text-editor">
<state line="5" column="58" selection-start="191" selection-end="191" vertical-scroll-proportion="0.2245509" vertical-offset="0" max-vertical-offset="334">
<state line="32" column="0" selection-start="1340" selection-end="1340" vertical-scroll-proportion="-4.3333335" vertical-offset="301" max-vertical-offset="540">
<folding>
<element signature="e#120#146#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/strategies/OpenIdDirectResponseStrategy.php">
<provider selected="true" editor-type-id="text-editor">
<state line="16" column="0" selection-start="367" selection-end="367" vertical-scroll-proportion="-4.25" vertical-offset="33" max-vertical-offset="285">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/controllers/HomeController.php">
<entry file="file://$PROJECT_DIR$/app/libs/openid/responses/OpenIdDirectResponse.php">
<provider selected="true" editor-type-id="text-editor">
<state line="4" column="25" selection-start="110" selection-end="115" vertical-scroll-proportion="0.17964073" vertical-offset="0" max-vertical-offset="345">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/filters.php">
<provider selected="true" editor-type-id="text-editor">
<state line="37" column="68" selection-start="1005" selection-end="1005" vertical-scroll-proportion="-1.0329342" vertical-offset="765" max-vertical-offset="1500">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/routes.php">
<provider selected="true" editor-type-id="text-editor">
<state line="32" column="60" selection-start="1250" selection-end="1250" vertical-scroll-proportion="-14.375" vertical-offset="0" max-vertical-offset="465">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/libs/openid/services/ITrustedSitesService.php">
<provider selected="true" editor-type-id="text-editor">
<state line="13" column="30" selection-start="265" selection-end="285" vertical-scroll-proportion="-3.75" vertical-offset="0" max-vertical-offset="345">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/services/TrustedSitesService.php">
<provider selected="true" editor-type-id="text-editor">
<state line="15" column="53" selection-start="368" selection-end="368" vertical-scroll-proportion="-3.75" vertical-offset="0" max-vertical-offset="690">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/services/ServerExtensionsService.php">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="405">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/controllers/UserController.php">
<provider selected="true" editor-type-id="text-editor">
<state line="133" column="18" selection-start="5169" selection-end="5174" vertical-scroll-proportion="-8.583333" vertical-offset="1609" max-vertical-offset="1950">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/views/identity.blade.php">
<provider selected="true" editor-type-id="text-editor">
<state line="13" column="10" selection-start="669" selection-end="669" vertical-scroll-proportion="-8.125" vertical-offset="0" max-vertical-offset="315">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/models/OpenIdTrustedSite.php">
<provider selected="true" editor-type-id="text-editor">
<state line="21" column="29" selection-start="439" selection-end="448" vertical-scroll-proportion="-3.75" vertical-offset="135" max-vertical-offset="555">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/views/profile.blade.php">
<provider selected="true" editor-type-id="text-editor">
<state line="12" column="142" selection-start="507" selection-end="507" vertical-scroll-proportion="0.6081081" vertical-offset="0" max-vertical-offset="360">
<folding />
<state line="64" column="0" selection-start="2152" selection-end="2152" vertical-scroll-proportion="0.33333334" vertical-offset="786" max-vertical-offset="1065">
<folding>
<element signature="e#195#233#0" expanded="true" />
</folding>
</state>
</provider>
</entry>

View File

@ -102,7 +102,6 @@ return array(
'Illuminate\Pagination\PaginationServiceProvider',
'Illuminate\Foundation\Providers\PublisherServiceProvider',
'Illuminate\Queue\QueueServiceProvider',
'Illuminate\Redis\RedisServiceProvider',
'Illuminate\Auth\Reminders\ReminderServiceProvider',
'Illuminate\Foundation\Providers\RouteListServiceProvider',
'Illuminate\Database\SeedServiceProvider',
@ -116,7 +115,8 @@ return array(
'openid\OpenIdServiceProvider',
'auth\AuthenticationServiceProvider',
'services\ServicesProvider',
'strategies\OpenIdResponseStrategyProvider'
'strategies\OpenIdResponseStrategyProvider',
'Illuminate\Redis\RedisServiceProvider',
),
/*
@ -170,7 +170,7 @@ return array(
'Password' => 'Illuminate\Support\Facades\Password',
'Queue' => 'Illuminate\Support\Facades\Queue',
'Redirect' => 'Illuminate\Support\Facades\Redirect',
'Redis' => 'Illuminate\Support\Facades\Redis',
'RedisLV4' => 'Illuminate\Support\Facades\Redis',
'Request' => 'Illuminate\Support\Facades\Request',
'Response' => 'Illuminate\Support\Facades\Response',
'Route' => 'Illuminate\Support\Facades\Route',

View File

@ -98,7 +98,7 @@ return array(
'default' => array(
'host' => '127.0.0.1',
'port' => 6379,
'database' => 0,
'database' => 1,
),
),

View File

@ -44,6 +44,16 @@ class DiscoveryController extends BaseController {
return $response;
}
/**
* If the Claimed Identifier was not previously discovered by the Relying Party
* (the "openid.identity" in the request was "http://specs.openid.net/auth/2.0/identifier_select"
* or a different Identifier, or if the OP is sending an unsolicited positive assertion),
* the Relying Party MUST perform discovery on the Claimed Identifier in
* the response to make sure that the OP is authorized to make assertions about the Claimed Identifier.
* @param $identifier
* @return mixed
*/
public function user($identifier){
$user = $this->auth_service->getUserByOpenId($identifier);
if(is_null($user))

View File

@ -2,13 +2,18 @@
use openid\XRDS\XRDSDocumentBuilder;
class HomeController extends BaseController {
private $discovery;
public function __construct(DiscoveryController $discovery){
$this->discovery=$discovery;
}
public function index(){
//This field contains a semicolon-separated list of representation schemes
//which will be accepted in the response to this request.
$accept = Request::header('Accept');
$accept_values = explode(",",$accept);
if(in_array(XRDSDocumentBuilder::ContentType,$accept_values))
return Redirect::action('DiscoveryController@idp');
return $this->discovery->idp();
if(Auth::guest())
return View::make("home");
else{

View File

@ -19,15 +19,19 @@ class UserController extends BaseController{
private $memento_service;
private $auth_service;
private $server_configuration_service;
private $discovery;
public function __construct(IMementoOpenIdRequestService $memento_service,
IAuthService $auth_service,
IServerConfigurationService $server_configuration_service,
ITrustedSitesService $trusted_sites_service){
ITrustedSitesService $trusted_sites_service,
DiscoveryController $discovery){
$this->memento_service = $memento_service;
$this->auth_service = $auth_service;
$this->server_configuration_service = $server_configuration_service;
$this->trusted_sites_service=$trusted_sites_service;
$this->discovery = $discovery;
//filters
$this->beforeFilter('csrf',array('only' => array('postLogin', 'postConsent')));
$this->beforeFilter('openid.save.request');
@ -108,8 +112,16 @@ class UserController extends BaseController{
//which will be accepted in the response to this request.
$accept = Request::header('Accept');
$accept_values = explode(",",$accept);
if(in_array(XRDSDocumentBuilder::ContentType,$accept_values))
return Redirect::action('DiscoveryController@user',array("identifier"=>$identifier));
if(in_array(XRDSDocumentBuilder::ContentType,$accept_values)){
/*
* If the Claimed Identifier was not previously discovered by the Relying Party
* (the "openid.identity" in the request was "http://specs.openid.net/auth/2.0/identifier_select"
* or a different Identifier, or if the OP is sending an unsolicited positive assertion),
* the Relying Party MUST perform discovery on the Claimed Identifier in
* the response to make sure that the OP is authorized to make assertions about the Claimed Identifier.
*/
return $this->discovery->user($identifier);
}
if(Auth::check()){
return View::make("identity")->with('username',$user->getFullName())->with( "identifier",$user->getIdentifier());
@ -125,7 +137,6 @@ class UserController extends BaseController{
public function getProfile(){
$user = $this->auth_service->getCurrentUser();
$sites = $this->trusted_sites_service->getAllTrustedSitesByUser($user);
return View::make("profile",array(
"username"=> $user->getFullName(),
@ -134,4 +145,8 @@ class UserController extends BaseController{
"sites"=>$sites
));
}
public function get_deleteTrustedSite($id){
return Response::json(array('success' => true));
}
}

View File

@ -13,7 +13,7 @@
App::before(function($request)
{
//
});
@ -104,3 +104,14 @@ Route::filter("openid.save.request",function(){
$memento_service->saveCurrentRequest();
});
use openid\services\Registry;
Route::filter("ssl",function(){
if (!Request::secure()){
$memento_service = Registry::getInstance()->get("openid\\services\\IMementoOpenIdRequestService");
$memento_service->saveCurrentRequest();
return Redirect::secure(Request::getRequestUri());
}
});

View File

@ -18,6 +18,10 @@ class OpenIdUser extends \Eloquent implements UserInterface , IOpenIdUser{
protected $table = 'openid_users';
private $member;
public function trusted_sites(){
return $this->has_many("OpenIdTrustedSite");
}
public function setMember($member){
$this->member=$member;
}

View File

@ -55,6 +55,7 @@ class OpenIdProtocol implements IOpenIdProtocol {
const OpenIDProtocol_Error = "error";
const OpenIDProtocol_Contact = "contact";
const OpenIDProtocol_Reference = "reference";
const OpenIDProtocol_IsValid = "is_valid";
@ -85,6 +86,7 @@ class OpenIdProtocol implements IOpenIdProtocol {
self::OpenIDProtocol_Error => self::OpenIDProtocol_Error,
self::OpenIDProtocol_Contact => self::OpenIDProtocol_Contact,
self::OpenIDProtocol_Reference => self::OpenIDProtocol_Reference,
self::OpenIDProtocol_IsValid => self::OpenIDProtocol_IsValid,
);
/**
@ -111,9 +113,10 @@ class OpenIdProtocol implements IOpenIdProtocol {
$association_service = \App::make("openid\\services\\IAssociationService");
$trusted_sites_service = \App::make("openid\\services\\ITrustedSitesService");
$server_config_service = \App::make("openid\\services\\IServerConfigurationService");
$successor = new OpenIdSessionAssociationRequestHandler(new OpenIdCheckAuthenticationRequestHandler(null));
$this->request_handlers = new OpenIdAuthenticationRequestHandler($auth_service,$memento_request_service,$auth_strategy,$server_extension_service,$association_service,$trusted_sites_service,$server_config_service,$successor);
$nonce_service = \App::make("openid\\services\\INonceService");
$check_auth = new OpenIdCheckAuthenticationRequestHandler($association_service,$nonce_service,null);
$session_assoc = new OpenIdSessionAssociationRequestHandler($check_auth);
$this->request_handlers = new OpenIdAuthenticationRequestHandler($auth_service,$memento_request_service,$auth_strategy,$server_extension_service,$association_service,$trusted_sites_service,$server_config_service,$nonce_service,$session_assoc);
}
public function getXRDSDiscovery($mode, $canonical_id=null){

View File

@ -0,0 +1,19 @@
<?php
/**
* Created by PhpStorm.
* User: smarcet
* Date: 10/24/13
* Time: 9:22 PM
*/
namespace openid\exceptions;
use \Exception;
class ReplayAttackException extends Exception{
public function __construct($message = "") {
$message = "ReplayAttackException : ".$message;
parent::__construct($message, 0 , null);
}
}

View File

@ -19,6 +19,7 @@ use openid\responses\OpenIdResponse;
use openid\services\Registry;
use openid\OpenIdMessage;
use openid\exceptions\InvalidOpenIdMessageException;
use openid\requests\contexts\PartialView;
class OpenIdAXRequest extends OpenIdRequest
{
@ -112,7 +113,13 @@ class OpenIdAXExtension extends OpenIdExtension
{
$ax_request = new OpenIdAXRequest($request->getMessage());
if (!$ax_request->IsValid()) return;
//todo : build sub view ....
$attributes = $ax_request->getRequiredAttributes();
$data = array();
foreach($attributes as $attr){
array_push($data,$attr);
}
$partial_view = new PartialView("extensions.ax",array("attributes"=>$data));
$context->addPartialView($partial_view);
}
public function prepareResponse(OpenIdRequest $request, OpenIdResponse $response, ResponseContext $context)
@ -147,6 +154,11 @@ class OpenIdAXExtension extends OpenIdExtension
}
}
public function verifyRequest(OpenIdRequest $request,ResponseContext $context){
$ax_request = new OpenIdAXRequest($request->getMessage());
if (!$ax_request->IsValid()) return;
}
public function getTrustedData(OpenIdRequest $request){
$data = array();

View File

@ -22,7 +22,6 @@ use openid\exceptions\InvalidOpenIdAuthenticationRequestMode;
use openid\responses\OpenIdNonImmediateNegativeAssertion;
use openid\responses\OpenIdImmediateNegativeAssertion;
use openid\services\ITrustedSitesService;
use openid\responses\OpenIdIndirectResponse;
use openid\responses\OpenIdIndirectGenericErrorResponse;
use openid\helpers\OpenIdErrorMessages;
use openid\helpers\OpenIdCryptoHelper;
@ -32,6 +31,7 @@ use openid\services\IServerConfigurationService;
use openid\helpers\OpenIdSignatureBuilder;
use openid\exceptions\InvalidOpenIdMessageException;
use openid\model\ITrustedSite;
use openid\services\INonceService;
/**
* Class OpenIdAuthenticationRequestHandler
* Implements
@ -51,6 +51,7 @@ class OpenIdAuthenticationRequestHandler extends OpenIdMessageHandler
private $extensions;
private $current_request;
private $current_request_context;
private $nonce_service;
public function __construct(IAuthService $authService,
IMementoOpenIdRequestService $mementoRequestService,
@ -59,6 +60,7 @@ class OpenIdAuthenticationRequestHandler extends OpenIdMessageHandler
IAssociationService $association_service,
ITrustedSitesService $trusted_sites_service,
IServerConfigurationService $server_configuration_service,
INonceService $nonce_service,
$successor)
{
parent::__construct($successor);
@ -70,6 +72,7 @@ class OpenIdAuthenticationRequestHandler extends OpenIdMessageHandler
$this->trusted_sites_service = $trusted_sites_service;
$this->server_configuration_service = $server_configuration_service;
$this->extensions = $this->server_extensions_service->getAllActiveExtensions();
$this->nonce_service = $nonce_service;
}
@ -92,15 +95,19 @@ class OpenIdAuthenticationRequestHandler extends OpenIdMessageHandler
$context->addSignParam(OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_ClaimedId));
$context->addSignParam(OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Identity));
$op_endpoint = $this->server_configuration_service->getOPEndpointURL();
$identity = $this->server_configuration_service->getUserIdentityEndpointURL($currentUser->getIdentifier());
$response = new OpenIdPositiveAssertionResponse($op_endpoint, $identity, $identity, $this->current_request->getReturnTo());
$op_endpoint = $this->server_configuration_service->getOPEndpointURL();
$identity = $this->server_configuration_service->getUserIdentityEndpointURL($currentUser->getIdentifier());
$current_nonce = $this->nonce_service->generateNonce();
$response = new OpenIdPositiveAssertionResponse($op_endpoint, $identity, $identity, $this->current_request->getReturnTo(),$current_nonce);
foreach ($this->extensions as $ext) {
$ext->prepareResponse($this->current_request, $response, $context);
}
//check former assoc handle...
$assoc_handle = $this->current_request->getAssocHandle();
$association = $this->association_service->getAssociation($assoc_handle);
$assoc_handle = $this->current_request->getAssocHandle();
$association = $this->association_service->getAssociation($assoc_handle);
if (empty($assoc_handle) || is_null($association)) {
// if not present or if it already void then enter on dumb mode
$new_secret = OpenIdCryptoHelper::generateSecret(OpenIdProtocol::SignatureAlgorithmHMAC_SHA256);
@ -117,6 +124,12 @@ class OpenIdAuthenticationRequestHandler extends OpenIdMessageHandler
$response->setAssocHandle($assoc_handle);
}
OpenIdSignatureBuilder::build($context, $association->getMacFunction(), $association->getSecret(), $response);
/*
* To prevent replay attacks, the OP MUST NOT issue more than one verification response for each
* authentication response it had previously issued. An authentication response and its matching
* verification request may be identified by their "openid.response_nonce" values.
*/
$this->nonce_service->associateNonce($current_nonce, $response->getSig());
return $response;
}
@ -126,7 +139,6 @@ class OpenIdAuthenticationRequestHandler extends OpenIdMessageHandler
private function doConsentProcess(){
//do consent process
$this->mementoRequestService->saveCurrentRequest();
$this->current_request_context->setStage(RequestContext::StageConsent);
foreach ($this->extensions as $ext) {
$ext->parseRequest($this->current_request, $this->current_request_context);
}
@ -327,6 +339,7 @@ class OpenIdAuthenticationRequestHandler extends OpenIdMessageHandler
protected function CanHandle(OpenIdMessage $message)
{
return OpenIdAuthenticationRequest::IsOpenIdAuthenticationRequest($message);
$res = OpenIdAuthenticationRequest::IsOpenIdAuthenticationRequest($message);
return $res;
}
}

View File

@ -11,15 +11,104 @@ namespace openid\handlers;
use openid\OpenIdMessage;
use openid\requests\OpenIdCheckAuthenticationRequest;
use openid\exceptions\InvalidOpenIdMessageException;
use openid\responses\OpenIdDirectGenericErrorResponse;
use openid\services\IAssociationService;
use openid\services\INonceService;
use openid\model\IAssociation;
use openid\exceptions\ReplayAttackException;
use openid\responses\contexts\ResponseContext;
use openid\helpers\OpenIdSignatureBuilder;
use openid\responses\OpenIdPositiveAssertionResponse;
use openid\responses\OpenIdCheckAuthenticationResponse;
class OpenIdCheckAuthenticationRequestHandler extends OpenIdMessageHandler{
protected function InternalHandle(OpenIdMessage $message){
private $association_service;
private $nonce_service;
private $current_request;
public function __construct(IAssociationService $association_service,
INonceService $nonce_service,
$successor)
{
parent::__construct($successor);
$this->association_service = $association_service;
$this->nonce_service = $nonce_service;
}
protected function InternalHandle(OpenIdMessage $message){
$this->current_request = null;
try
{
$this->current_request = new OpenIdCheckAuthenticationRequest($message);
if(!$this->current_request->IsValid())
throw new InvalidOpenIdMessageException("OpenIdCheckAuthenticationRequest is Invalid!");
/**
* For verifying signatures an OP MUST only use private associations and MUST NOT
* use associations that have shared keys. If the verification request contains a handle
* for a shared association, it means the Relying Party no longer knows the shared secret,
* or an entity other than the RP (e.g. an attacker) has established this association with
* the OP.
* To prevent replay attacks, the OP MUST NOT issue more than one verification response for each
* authentication response it had previously issued. An authentication response and its matching
* verification request may be identified by their "openid.response_nonce" values.
*/
$claimed_assoc = $this->current_request->getAssocHandle();
$stored_assoc = $this->association_service->getAssociation($claimed_assoc);
if(is_null($stored_assoc) || $stored_assoc->getType()!=IAssociation::TypePrivate)
throw new InvalidOpenIdMessageException("OpenIdCheckAuthenticationRequest is Invalid!");
$claimed_nonce = $this->current_request->getNonce();
$claimed_sig = $this->current_request->getSig();
$claimed_op_endpoint = $this->current_request->getOPEndpoint();
$claimed_identity = $this->current_request->getClaimedId();
$claimed_invalidate_handle = $this->current_request->getInvalidateHandle();
if(!is_null($claimed_invalidate_handle) && !empty($claimed_invalidate_handle)){
$invalidate_stored_assoc = $this->association_service->getAssociation($claimed_invalidate_handle);
if(!is_null($invalidate_stored_assoc)){
$claimed_invalidate_handle = null;
}
}
$this->nonce_service->markNonceAsInvalid($claimed_nonce,$claimed_sig);
$res = OpenIdSignatureBuilder::verify($this->current_request, $stored_assoc->getMacFunction(), $stored_assoc->getSecret(),$claimed_sig);
//delete association
$this->association_service->deleteAssociation($claimed_assoc);
$is_valid = 'false';
if($res){
//assertion is valid
$is_valid = 'true';
}
return new OpenIdCheckAuthenticationResponse($is_valid,$claimed_invalidate_handle);
}
catch(ReplayAttackException $rEx){
$response = new OpenIdDirectGenericErrorResponse($rEx->getMessage());
return $response;
}
catch (InvalidOpenIdMessageException $ex) {
$response = new OpenIdDirectGenericErrorResponse($ex->getMessage());
return $response;
}
}
protected function CanHandle(OpenIdMessage $message)
{
// TODO: Implement CanHandle() method.
$res = OpenIdCheckAuthenticationRequest::IsOpenIdCheckAuthenticationRequest($message);
return $res;
}
}

View File

@ -26,7 +26,7 @@ abstract class OpenIdMessageHandler {
//handle request
return $this->InternalHandle($message);
}
else if(isset($this->successor) && !null($this->successor))
else if(isset($this->successor) && !is_null($this->successor))
{
return $this->successor->HandleMessage($message);
}

View File

@ -20,6 +20,7 @@ class OpenIdSessionAssociationRequestHandler extends OpenIdMessageHandler{
protected function CanHandle(OpenIdMessage $message)
{
// TODO: Implement CanHandle() method.
$res = false;
return $res;
}
}

View File

@ -10,9 +10,33 @@
namespace openid\helpers;
use openid\responses\contexts\ResponseContext;
use openid\responses\OpenIdPositiveAssertionResponse;
use openid\requests\OpenIdCheckAuthenticationRequest;
class OpenIdSignatureBuilder {
/**
* @param OpenIdCheckAuthenticationRequest $request
* @param $macAlg
* @param $secret
* @param $claimed_sig
* @return bool
*/
public static function verify(OpenIdCheckAuthenticationRequest $request,$macAlg,$secret,$claimed_sig){
$res = false;
$signed = $request->getSigned();
$claimed_signed = explode(',',$signed);
$data = '';
foreach($claimed_signed as $key){
$key_php = str_ireplace('.','_',$key);
$val = $request->getParam('openid_'.$key_php);
$data .= $key . ':' . $val . "\n";
}
$computed_sig = base64_encode(OpenIdCryptoHelper::computeHMAC($macAlg, $data, $secret));
if($claimed_sig==$computed_sig)
$res = true;
return $res;
}
/**
* @param ResponseContext $context
* @param $macAlg

View File

@ -14,7 +14,11 @@ use openid\OpenIdMessage;
use openid\OpenIdProtocol;
use openid\helpers\OpenIdUriHelper;
class OpenIdAuthenticationRequest extends OpenIdRequest{
class OpenIdAuthenticationRequest extends OpenIdRequest {
public function __construct(OpenIdMessage $message){
parent::__construct($message);
}
public static function IsOpenIdAuthenticationRequest(OpenIdMessage $message){
$mode = $message->getMode();
@ -58,6 +62,21 @@ class OpenIdAuthenticationRequest extends OpenIdRequest{
return null;
}
/**
* @param $claimed_id
* @param $identity
* @return bool
*/
private function isValidIdentifier($claimed_id,$identity){
if($claimed_id==$identity && $identity==OpenIdProtocol::IdentifierSelectType && $claimed_id==OpenIdProtocol::IdentifierSelectType)
return true;
if($claimed_id==$identity){
//todo: check valid user?
return true;
}
return false;
}
public function IsValid(){
$return_to = $this->getReturnTo();
$claimed_id = $this->getClaimedId();
@ -67,8 +86,9 @@ class OpenIdAuthenticationRequest extends OpenIdRequest{
return !empty($return_to)
&& !empty($realm)
&& OpenIdUriHelper::checkRealm($realm,$return_to)
&& !empty($claimed_id) && $claimed_id == OpenIdProtocol::IdentifierSelectType
&& !empty($identity) && $identity == OpenIdProtocol::IdentifierSelectType
&& !empty($claimed_id)
&& !empty($identity)
&& $this->isValidIdentifier($claimed_id,$identity)
&& !empty($mode) && ($mode == OpenIdProtocol::ImmediateMode || $mode == OpenIdProtocol::SetupMode);
}

View File

@ -0,0 +1,57 @@
<?php
/**
* Created by PhpStorm.
* User: smarcet
* Date: 10/24/13
* Time: 9:02 PM
*/
namespace openid\requests;
use openid\OpenIdProtocol;
use openid\OpenIdMessage;
class OpenIdCheckAuthenticationRequest extends OpenIdAuthenticationRequest {
public function __construct(OpenIdMessage $message){
parent::__construct($message);
}
public static function IsOpenIdCheckAuthenticationRequest(OpenIdMessage $message){
$mode = $message->getMode();
if($mode==OpenIdProtocol::CheckAuthenticationMode) return true;
return false;
}
public function IsValid()
{
$mode = $this->getMode();
$claimed_assoc = $this->getAssocHandle();
if($mode== OpenIdProtocol::CheckAuthenticationMode
&& !is_null($claimed_assoc) && !empty($claimed_assoc)){
return true;
}
return false;
}
public function getSig(){
return $this->message[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Sig,"_")];
}
public function getSigned(){
return $this->message[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Signed,"_")];
}
public function getNonce(){
return $this->message[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Nonce,"_")];
}
public function getOPEndpoint(){
return $this->message[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_OpEndpoint,"_")];
}
public function getInvalidateHandle(){
return $this->message[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_InvalidateHandle,"_")];
}
}

View File

@ -27,4 +27,8 @@ abstract class OpenIdRequest {
}
abstract public function IsValid();
public function getParam($param){
return $this->message[$param];
}
}

View File

@ -0,0 +1,36 @@
<?php
/**
* Created by PhpStorm.
* User: smarcet
* Date: 10/24/13
* Time: 10:08 PM
*/
namespace openid\responses;
use openid\OpenIdProtocol;
use openid\responses\OpenIdDirectResponse;
class OpenIdCheckAuthenticationResponse extends OpenIdDirectResponse {
/**
* 11.4.2.2. Response Parameters
* ns :As specified in Section 5.1.2.
* is_valid
* Value: "true" or "false"; asserts whether the signature of the verification
* request is valid.
* invalidate_handle
* Value: (optional) The "invalidate_handle" value sent in the verification request,
* if the OP confirms it is invalid.
* Description: If present in a verification response with "is_valid" set to "true",
* the Relying Party SHOULD remove the corresponding association from its store and
* SHOULD NOT send further authentication requests with this handle.
* Note: This two-step process for invalidating associations is necessary to prevent an attacker from invalidating an association at will by adding "invalidate_handle" parameters to an authentication response.
* @param $is_valid
* @param null $invalidate_handle
*/
public function __construct($is_valid,$invalidate_handle=null) {
parent::__construct();
$this[OpenIdProtocol::OpenIDProtocol_IsValid] = $is_valid;
if(!is_null($invalidate_handle) && !empty($invalidate_handle))
$this[OpenIdProtocol::OpenIDProtocol_InvalidateHandle] = $invalidate_handle;
}
}

View File

@ -9,6 +9,7 @@
namespace openid\responses;
use openid\exceptions\InvalidKVFormat;
use openid\OpenIdProtocol;
/**
* Class OpenIdDirectResponse
@ -30,7 +31,7 @@ class OpenIdDirectResponse extends OpenIdResponse {
* response. Future versions of the specification may define different values in order
* to allow message recipients to properly interpret the request.
*/
$this["ns"]=self::OpenId2ResponseType;
$this["ns"]=OpenIdProtocol::OpenID2MessageType;
}
/**
* Implementation of 4.1.1. Key-Value Form Encoding

View File

@ -14,16 +14,18 @@ use openid\OpenIdProtocol;
class OpenIdPositiveAssertionResponse extends OpenIdIndirectResponse {
public function __construct($op_endpoint,$claimed_id,$identity,$return_to){
public function __construct($op_endpoint,$claimed_id,$identity,$return_to,$nonce){
parent::__construct();
$this->setMode(OpenIdProtocol::IdMode);
$this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_OpEndpoint)] = $op_endpoint;
$this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_ClaimedId)] = $claimed_id;
$this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Identity)] = $identity;
$this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_ReturnTo)] = $return_to;
$this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Nonce)] = $this->generateNonce();
$this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Nonce)] = $nonce;
}
public function setAssocHandle($assoc_handle){
$this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_AssocHandle)] = $assoc_handle;
}
@ -32,6 +34,10 @@ class OpenIdPositiveAssertionResponse extends OpenIdIndirectResponse {
$this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Signed)] = $signed;
}
public function getSig(){
return $this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Sig)];
}
public function setSig($sig){
$this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_Sig)] = $sig;
}
@ -40,7 +46,4 @@ class OpenIdPositiveAssertionResponse extends OpenIdIndirectResponse {
$this[OpenIdProtocol::param(OpenIdProtocol::OpenIDProtocol_InvalidateHandle)] = $invalidate_handle;
}
private function generateNonce(){
return gmdate('Y-m-d\TH:i:s\Z') . uniqid();
}
}

View File

@ -10,8 +10,6 @@
namespace openid\responses\contexts;
use openid\OpenIdProtocol;
class ResponseContext
{

View File

@ -28,4 +28,14 @@ interface IAssociationService {
* @return bool
*/
public function deleteAssociation($handle);
/**
* For verifying signatures an OP MUST only use private associations and MUST NOT
* use associations that have shared keys. If the verification request contains a handle
* for a shared association, it means the Relying Party no longer knows the shared secret,
* or an entity other than the RP (e.g. an attacker) has established this association with the OP.
* @param $handle
* @return mixed
*/
public function getAssociationType($handle);
}

View File

@ -0,0 +1,28 @@
<?php
/**
* Created by PhpStorm.
* User: smarcet
* Date: 10/24/13
* Time: 9:06 PM
*/
namespace openid\services;
use \openid\exceptions\ReplayAttackException;
interface INonceService {
public function generateNonce();
public function associateNonce($nonce,$signature);
/**
* To prevent replay attacks, the OP MUST NOT issue more than one verification response
* for each authentication response it had previously issued. An authentication response
* and its matching verification request may be identified by their "openid.response_nonce" values.
* @param $nonce
* @param $signature
* @throws ReplayAttackException
* @return mixed
*/
public function markNonceAsInvalid($nonce,$signature);
}

View File

@ -29,7 +29,7 @@ class OpenIdResponseStrategyFactoryMethod {
break;
case OpenIdDirectResponse::OpenIdDirectResponse:
{
return Registry::getInstance()->get(OpenIdIndirectResponse::OpenIdDirectResponse);
return Registry::getInstance()->get(OpenIdDirectResponse::OpenIdDirectResponse);
}
break;
default:

View File

@ -14,6 +14,10 @@ class OpenIdTrustedSite extends Eloquent implements ITrustedSite{
protected $table = 'openid_trusted_sites';
public $timestamps = false;
public function user(){
return $this->belongs_to("OpenIdUser");
}
public function getRealm()
{
return $this->realm;
@ -27,7 +31,7 @@ class OpenIdTrustedSite extends Eloquent implements ITrustedSite{
public function getUser()
{
// TODO: Implement getUser() method.
return $this->user();
}
public function getAuthorizationPolicy()

View File

@ -11,24 +11,37 @@
|
*/
Route::get('/', "HomeController@index");
Route::get('/discovery', "DiscoveryController@idp");
Route::get("/{identifier}","UserController@getIdentity");
Route::get("/accounts/user/ud/{identifier}","DiscoveryController@user");
//op endpoint url
Route::post('/accounts/openid/v2','OpenIdProviderController@op_endpoint');
Route::get('/accounts/openid/v2','OpenIdProviderController@op_endpoint');
//user interaction
Route::get('/accounts/user/login',"UserController@getLogin");
Route::post('/accounts/user/login',"UserController@postLogin");
Route::group(["before" => "auth"], function()
Route::group(["before"=>"ssl"],function(){
Route::get('/', "HomeController@index");
Route::get('/discovery', "DiscoveryController@idp");
/*
* If the Claimed Identifier was not previously discovered by the Relying Party
* (the "openid.identity" in the request was "http://specs.openid.net/auth/2.0/identifier_select"
* or a different Identifier, or if the OP is sending an unsolicited positive assertion),
* the Relying Party MUST perform discovery on the Claimed Identifier in
* the response to make sure that the OP is authorized to make assertions about the Claimed Identifier.
*/
Route::get("/{identifier}","UserController@getIdentity");
Route::get("/accounts/user/ud/{identifier}","DiscoveryController@user");
//op endpoint url
Route::post('/accounts/openid/v2','OpenIdProviderController@op_endpoint');
Route::get('/accounts/openid/v2','OpenIdProviderController@op_endpoint');
//user interaction
Route::get('/accounts/user/login',"UserController@getLogin");
Route::post('/accounts/user/login',"UserController@postLogin");
});
Route::group(["before" => array("ssl","auth")], function()
{
Route::get('/accounts/user/consent',"UserController@getConsent");
Route::post('/accounts/user/consent',"UserController@postConsent");
Route::any("/accounts/user/logout","UserController@logout");
Route::any("/accounts/user/profile","UserController@getProfile");
Route::any("/accounts/user/profile/trusted_site/delete/{id}","UserController@get_deleteTrustedSite");
});

View File

@ -58,6 +58,27 @@ class AssociationService implements IAssociationService{
public function deleteAssociation($handle)
{
$assoc = OpenIdAssociation::where('identifier','=',$handle)->first();
$assoc->delete();
if(!is_null($assoc)){
$assoc->delete();
return true;
}
return false;
}
/**
* For verifying signatures an OP MUST only use private associations and MUST NOT
* use associations that have shared keys. If the verification request contains a handle
* for a shared association, it means the Relying Party no longer knows the shared secret,
* or an entity other than the RP (e.g. an attacker) has established this association with the OP.
* @param $handle
* @return mixed
*/
public function getAssociationType($handle)
{
$assoc = OpenIdAssociation::where('identifier','=',$handle)->first();
if(!is_null($assoc)){
return $assoc->type;
}
return false;
}
}

View File

@ -0,0 +1,51 @@
<?php
/**
* Created by PhpStorm.
* User: smarcet
* Date: 10/24/13
* Time: 9:11 PM
*/
namespace services;
//use Illuminate\Redis\Database as Redis;
use openid\services\INonceService;
use openid\exceptions\ReplayAttackException;
class NonceService implements INonceService {
private $redis;
public function __construct(){
$this->redis = \RedisLV4::connection();
}
public function generateNonce()
{
$nonce = gmdate('Y-m-d\TH:i:s\Z') . uniqid();
//sets the $nonce to live 60 secs
$this->redis->setex($nonce,3600 ,'');
return $nonce;
}
/**
* @param $nonce
* @param $signature
* @throws \openid\exceptions\ReplayAttackException
*/
public function markNonceAsInvalid($nonce, $signature)
{
$old_signature = $this->redis->get($nonce);
if(!$old_signature){
throw new ReplayAttackException(sprintf("nonce %s was already used!.",$nonce));
}
if($old_signature!=$signature){
throw new ReplayAttackException(sprintf("nonce %s was associated with sig %s, but sig %s was provided.",$nonce,$old_signature,$signature));
}
$this->redis->del($nonce);
}
public function associateNonce($nonce, $signature)
{
$this->redis->setex($nonce,3600,$signature);
}
}

View File

@ -10,11 +10,18 @@
namespace services;
use Illuminate\Support\ServiceProvider;
use openid\services\Registry;
use Illuminate\Redis\Database;
class ServicesProvider extends ServiceProvider {
public function register()
{
$this->app['redis'] = $this->app->share(function($app)
{
return new Database($app['config']['database.redis']);
});
$this->app->singleton('openid\\services\\IMementoOpenIdRequestService','services\\MementoRequestService');
$this->app->singleton('openid\\handlers\\IOpenIdAuthenticationStrategy','services\\AuthenticationStrategy');
$this->app->singleton('openid\\services\\IServerExtensionsService','services\\ServerExtensionsService');
@ -22,6 +29,7 @@ class ServicesProvider extends ServiceProvider {
$this->app->singleton('openid\\services\\ITrustedSitesService','services\\TrustedSitesService');
$this->app->singleton('openid\\services\\IServerConfigurationService','services\\ServerConfigurationService');
$this->app->singleton('openid\\services\\IUserService','services\\UserService');
$this->app->singleton('openid\\services\\INonceService','services\\NonceService');
Registry::getInstance()->set("openid\\services\\IMementoOpenIdRequestService",\App::make("openid\\services\\IMementoOpenIdRequestService"));
Registry::getInstance()->set("openid\\handlers\\IOpenIdAuthenticationStrategy",\App::make("openid\\handlers\\IOpenIdAuthenticationStrategy"));
@ -30,6 +38,11 @@ class ServicesProvider extends ServiceProvider {
Registry::getInstance()->set("openid\\services\\ITrustedSitesService",\App::make("openid\\services\\ITrustedSitesService"));
Registry::getInstance()->set("openid\\services\\IServerConfigurationService",\App::make("openid\\services\\IServerConfigurationService"));
Registry::getInstance()->set("openid\\services\\IUserService",\App::make("openid\\services\\IUserService"));
Registry::getInstance()->set("openid\\services\\INonceService",\App::make("openid\\services\\INonceService"));
}
public function provides()
{
return array('redis');
}
}

0
app/storage/.gitkeep Normal file → Executable file
View File

View File

@ -14,8 +14,8 @@ class OpenIdDirectResponseStrategy implements IOpenIdResponseStrategy {
public function handle($response)
{
$response = Response::make($response->getContent(), $response->getHttpCode());
$response->header('Content-Type', $response->getContentType());
return $response;
$http_response = Response::make($response->getContent(), $response->getHttpCode());
$http_response->header('Content-Type', $response->getContentType());
return $http_response;
}
}

View File

@ -0,0 +1,7 @@
@if(count($attributes)>0)
<ul>
@foreach ($attributes as $attr)
<li>{{$attr}}</li>
@endforeach
</ul>
@endif

View File

@ -2,8 +2,16 @@
<html>
<head>
<title>OpenstackId Idp</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{{ HTML::style('css/bootstrap.css') }}
{{ HTML::script('js/jquery-2.0.3.min.js')}}
</head>
<body>
<div
@yield('content')
{{ HTML::script('js/bootstrap.min.js')}}
@yield('scripts')
</body>
</html>

View File

@ -10,10 +10,31 @@
<h3>Trusted Sites</h3>
<ul>
@foreach ($sites as $site)
<li><div><span>Realm {{ $site->getRealm() }} - Policy {{ $site->getAuthorizationPolicy() }}</span>&nbsp;<a href="#">Edit</a>&nbsp;<a href="#">Delete</a></div></li>
<li><div><span>Realm {{ $site->getRealm() }} - Policy {{ $site->getAuthorizationPolicy() }}</span>&nbsp;{{ HTML::link('','Edit',array('class'=>'btn edit-realm')) }}&nbsp;{{ HTML::link(URL::action("UserController@get_deleteTrustedSite",array("id"=>$site->id)),'Delete',array('class'=>'btn del-realm')) }}</div></li>
@endforeach
</ul>
</div>
@endif
</div>
@section('scripts')
<script type="application/javascript">
$(document).ready(function() {
$("#trusted_sites").on('click',".del-realm",function(event){
var url = $(this).attr("href") ;
$.ajax({
url: url,
type: "GET",
dataType : "json",
success: function( json ) {
},
error: function( xhr, status ) {
alert( "Sorry, there was a problem!" );
}
});
event.preventDefault();
return false;
});
});
</script>
@stop

6315
public/css/bootstrap.css vendored Normal file

File diff suppressed because it is too large Load Diff

874
public/css/bootstrap.min.css vendored Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

2291
public/js/bootstrap.js vendored Normal file

File diff suppressed because it is too large Load Diff

7
public/js/bootstrap.min.js vendored Normal file

File diff suppressed because one or more lines are too long

6
public/js/jquery-2.0.3.min.js vendored Normal file

File diff suppressed because one or more lines are too long