aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Web/Tango.MachineService
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2019-02-20 22:55:15 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2019-02-20 22:55:15 +0200
commit9447a8a09f87d6ea2cb62860021c595386668eec (patch)
treea02db15a1247587f14fedb6ccae76f79bd63afb3 /Software/Visual_Studio/Web/Tango.MachineService
parent17446569ca8d8dd00331da5926b938593c4b117f (diff)
downloadTango-9447a8a09f87d6ea2cb62860021c595386668eec.tar.gz
Tango-9447a8a09f87d6ea2cb62860021c595386668eec.zip
A lot of work !!!
Diffstat (limited to 'Software/Visual_Studio/Web/Tango.MachineService')
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/App_Start/WebApiConfig.cs8
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs26
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs42
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Filters/JwtTokenFilter.cs46
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Filters/MachineStudioLoginFilter.cs35
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Filters/PPCLoginFilter.cs35
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/MachineServiceConfig.cs1
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Tango.MachineService.csproj12
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Web.config9
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/packages.config3
10 files changed, 98 insertions, 119 deletions
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/App_Start/WebApiConfig.cs b/Software/Visual_Studio/Web/Tango.MachineService/App_Start/WebApiConfig.cs
index 0a63e9acb..73265328c 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/App_Start/WebApiConfig.cs
+++ b/Software/Visual_Studio/Web/Tango.MachineService/App_Start/WebApiConfig.cs
@@ -22,10 +22,10 @@ namespace Tango.MachineService
defaults: new { id = RouteParameter.Optional });
config.Formatters.Insert(0, new ProtoBufFormatter());
- config.Formatters.Insert(1, new JsonNetFormatter(new JsonSerializerSettings()
- {
- PreserveReferencesHandling = PreserveReferencesHandling.All,
- }));
+ //config.Formatters.Insert(1, new JsonNetFormatter(new JsonSerializerSettings()
+ //{
+ // PreserveReferencesHandling = PreserveReferencesHandling.All,
+ //}));
}
}
}
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs
index 054c8d781..467b6ae28 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs
+++ b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs
@@ -24,12 +24,15 @@ using Tango.MachineService.Filters;
namespace Tango.MachineService.Controllers
{
- public class MachineStudioController : JsonController
+ public class MachineStudioController : TangoController<MachineStudioController.TokenObject>
{
private static List<MachineStudioPendingUpload> _pendingUploads;
private ActiveDirectoryManager _ad_manager;
- public static TokensManager<String> TokensManager { get; set; }
+ public class TokenObject
+ {
+ public String UserGuid { get; set; }
+ }
#region Constructors
@@ -38,8 +41,6 @@ namespace Tango.MachineService.Controllers
/// </summary>
static MachineStudioController()
{
- TokensManager = new TokensManager<string>();
- TokensManager.ExpirationTime = TimeSpan.FromDays(10);
_pendingUploads = new List<MachineStudioPendingUpload>();
}
@@ -61,11 +62,13 @@ namespace Tango.MachineService.Controllers
/// <param name="request">The request.</param>
/// <returns></returns>
[HttpPost]
- [MachineStudioLoginFilter]
+ [JwtTokenFilter]
public CheckForUpdatesResponse CheckForUpdates(CheckForUpdatesRequest request)
{
LogManager.Log("Request received...");
+ var userID = RequestToken.Object.UserGuid;
+
CheckForUpdatesResponse response = new CheckForUpdatesResponse();
using (ObservablesContext db = ObservablesContextHelper.CreateContext())
@@ -103,7 +106,7 @@ namespace Tango.MachineService.Controllers
/// <param name="request">The request.</param>
/// <returns></returns>
[HttpPost]
- [MachineStudioLoginFilter]
+ [JwtTokenFilter]
public DownloadLatestVersionResponse DownloadLatestVersion(DownloadLatestVersionRequest request)
{
LogManager.Log("Request received...");
@@ -138,14 +141,14 @@ namespace Tango.MachineService.Controllers
/// <exception cref="System.ArgumentException">New version must be greater than latest version.</exception>
/// <exception cref="AuthenticationException">Invalid user credentials.</exception>
[HttpPost]
- [MachineStudioLoginFilter]
+ [JwtTokenFilter]
public UploadVersionResponse UploadVersion(UploadVersionRequest request)
{
UploadVersionResponse response = new UploadVersionResponse();
using (ObservablesContext db = ObservablesContextHelper.CreateContext())
{
- String userID = TokensManager.GetTokenObject(request.AccessToken);
+ String userID = RequestToken.Object.UserGuid;
var user = new UserBuilder(db).Set(userID).WithRolesAndPermissions().Build();
@@ -195,7 +198,7 @@ namespace Tango.MachineService.Controllers
/// <returns></returns>
/// <exception cref="System.ArgumentException">Invalid Token.</exception>
[HttpPost]
- [MachineStudioLoginFilter]
+ [JwtTokenFilter]
public UploadCompletedResponse NotifyUploadCompleted(UploadCompletedRequest request)
{
MachineStudioPendingUpload upload = _pendingUploads.FirstOrDefault(x => x.Token == request.Token);
@@ -347,7 +350,10 @@ namespace Tango.MachineService.Controllers
Password = request.Password,
},
- WebToken = TokensManager.GetOrCreate(user.Guid),
+ AccessToken = WebToken<TokenObject>.CreateNew(MachineServiceConfig.JWT_TOKEN_SECRET, new TokenObject()
+ {
+ UserGuid = user.Guid,
+ }, DateTime.UtcNow.AddDays(1)).AccessToken,
VersionChangeRequired = versionChangeRequired,
RequiredVersion = requiredVersion,
};
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs
index 70d64be51..912d2e5e9 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs
+++ b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs
@@ -26,30 +26,22 @@ using Tango.MachineService.Filters;
namespace Tango.MachineService.Controllers
{
- public class PPCController : JsonController
+ public class PPCController : TangoController<PPCController.TokenObject>
{
private static List<PPCPendingUpload> _pendingUploads;
private ActiveDirectoryManager _ad_manager;
- public class TokenObject : IEquatable<TokenObject>
+ public class TokenObject
{
public LoginMode Mode { get; set; }
public String UserGuid { get; set; }
public String MachineGuid { get; set; }
-
- public bool Equals(TokenObject other)
- {
- return UserGuid == other.UserGuid || MachineGuid == MachineGuid;
- }
}
- public static TokensManager<TokenObject> TokensManager { get; set; }
-
#region Constructors
static PPCController()
{
- TokensManager = new TokensManager<TokenObject>();
_pendingUploads = new List<PPCPendingUpload>();
}
@@ -62,8 +54,8 @@ namespace Tango.MachineService.Controllers
#region Setup & Update
- [PPCLoginFilter]
[HttpPost]
+ [JwtTokenFilter]
public MachineSetupResponse MachineSetup(MachineSetupRequest request)
{
MachineSetupResponse response = new MachineSetupResponse();
@@ -73,7 +65,7 @@ namespace Tango.MachineService.Controllers
using (ObservablesContext db = ObservablesContextHelper.CreateContext())
{
db.Configuration.LazyLoadingEnabled = false;
- String machine_guid = TokensManager.GetTokenObject(request.AccessToken).MachineGuid;
+ String machine_guid = RequestToken.Object.MachineGuid;
var machine = db.Machines.SingleOrDefault(x => x.Guid == machine_guid);
@@ -136,8 +128,8 @@ namespace Tango.MachineService.Controllers
return response;
}
- [PPCLoginFilter]
[HttpPost]
+ [JwtTokenFilter]
public DownloadUpdateResponse MachineUpdate(DownloadUpdateRequest request)
{
DownloadUpdateResponse response = new DownloadUpdateResponse();
@@ -145,7 +137,7 @@ namespace Tango.MachineService.Controllers
using (ObservablesContext db = ObservablesContextHelper.CreateContext())
{
db.Configuration.LazyLoadingEnabled = false;
- String machine_guid = TokensManager.GetTokenObject(request.AccessToken).MachineGuid;
+ String machine_guid = RequestToken.Object.MachineGuid;
var machine = db.Machines.SingleOrDefault(x => x.Guid == machine_guid);
@@ -195,15 +187,15 @@ namespace Tango.MachineService.Controllers
return response;
}
- [PPCLoginFilter]
[HttpPost]
+ [JwtTokenFilter]
public CheckForUpdateResponse CheckForUpdate(CheckForUpdateRequest request)
{
CheckForUpdateResponse response = new CheckForUpdateResponse();
using (ObservablesContext db = ObservablesContextHelper.CreateContext())
{
- String machine_guid = TokensManager.GetTokenObject(request.AccessToken).MachineGuid;
+ String machine_guid = RequestToken.Object.MachineGuid;
var machine = db.Machines.SingleOrDefault(x => x.Guid == machine_guid);
@@ -227,8 +219,8 @@ namespace Tango.MachineService.Controllers
return response;
}
- [PPCLoginFilter]
[HttpPost]
+ [JwtTokenFilter]
public UpdateDBResponse UpdateDB(UpdateDBRequest request)
{
UpdateDBResponse response = new UpdateDBResponse();
@@ -236,7 +228,7 @@ namespace Tango.MachineService.Controllers
using (ObservablesContext db = ObservablesContextHelper.CreateContext())
{
- String machine_guid = TokensManager.GetTokenObject(request.AccessToken).MachineGuid;
+ String machine_guid = RequestToken.Object.MachineGuid;
var machine = db.Machines.SingleOrDefault(x => x.Guid == machine_guid);
@@ -301,8 +293,8 @@ namespace Tango.MachineService.Controllers
return response;
}
- [PPCLoginFilter]
[HttpPost]
+ [JwtTokenFilter]
public UploadVersionResponse UploadVersion(UploadVersionRequest request)
{
UploadVersionResponse response = new UploadVersionResponse();
@@ -315,7 +307,7 @@ namespace Tango.MachineService.Controllers
db.UsersRoles.ToList();
db.RolesPermissions.ToList();
- var user_guid = TokensManager.GetTokenObject(request.AccessToken).UserGuid;
+ var user_guid = RequestToken.Object.UserGuid;
var user = new UserBuilder(db).Set(user_guid).WithRolesAndPermissions().Build();
@@ -369,8 +361,8 @@ namespace Tango.MachineService.Controllers
return response;
}
- [PPCLoginFilter]
[HttpPost]
+ [JwtTokenFilter]
public UploadCompletedResponse NotifyUploadCompleted(UploadCompletedRequest request)
{
PPCPendingUpload upload = _pendingUploads.FirstOrDefault(x => x.Token == request.Token);
@@ -439,11 +431,11 @@ namespace Tango.MachineService.Controllers
throw new AuthenticationException("Domain user found but the database entry validation failed.");
}
- response.WebToken = TokensManager.GetOrCreate(new TokenObject()
+ response.AccessToken = WebToken<TokenObject>.CreateNew(MachineServiceConfig.JWT_TOKEN_SECRET, new TokenObject()
{
Mode = LoginMode.User,
UserGuid = user.Guid,
- });
+ }).AccessToken;
}
else if (request.Mode == LoginMode.Machine)
{
@@ -454,11 +446,11 @@ namespace Tango.MachineService.Controllers
throw new AuthenticationException("Invalid serial number.");
}
- response.WebToken = TokensManager.GetOrCreate(new TokenObject()
+ response.AccessToken = WebToken<TokenObject>.CreateNew(MachineServiceConfig.JWT_TOKEN_SECRET, new TokenObject()
{
Mode = LoginMode.Machine,
MachineGuid = machine.Guid,
- });
+ }).AccessToken;
}
}
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Filters/JwtTokenFilter.cs b/Software/Visual_Studio/Web/Tango.MachineService/Filters/JwtTokenFilter.cs
new file mode 100644
index 000000000..4cf22cc43
--- /dev/null
+++ b/Software/Visual_Studio/Web/Tango.MachineService/Filters/JwtTokenFilter.cs
@@ -0,0 +1,46 @@
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Security.Authentication;
+using System.Web;
+using System.Web.Http;
+using System.Web.Http.Controllers;
+using System.Web.Http.Filters;
+using Tango.Transport.Web;
+using Tango.Web.Authentication;
+
+namespace Tango.MachineService.Filters
+{
+ public class JwtTokenFilter : ActionFilterAttribute
+ {
+ public override void OnActionExecuting(HttpActionContext actionContext)
+ {
+ var authorizationHeader = actionContext.Request.Headers.Authorization;
+
+ if (authorizationHeader != null && authorizationHeader.Parameter != null)
+ {
+ try
+ {
+ WebToken.Validate(MachineServiceConfig.JWT_TOKEN_SECRET, authorizationHeader.Parameter);
+ }
+ catch (JWT.TokenExpiredException)
+ {
+ throw new TokenExpiredException("Token expired.");
+ }
+ catch (JWT.SignatureVerificationException)
+ {
+ throw new InvalidTokenException("Invalid token.");
+ }
+ }
+ else
+ {
+ throw new AuthenticationException("No token specified.");
+ }
+
+ base.OnActionExecuting(actionContext);
+ }
+ }
+} \ No newline at end of file
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Filters/MachineStudioLoginFilter.cs b/Software/Visual_Studio/Web/Tango.MachineService/Filters/MachineStudioLoginFilter.cs
deleted file mode 100644
index dfa78f0a0..000000000
--- a/Software/Visual_Studio/Web/Tango.MachineService/Filters/MachineStudioLoginFilter.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using Newtonsoft.Json;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Net;
-using System.Net.Http;
-using System.Security.Authentication;
-using System.Web;
-using System.Web.Http;
-using System.Web.Http.Controllers;
-using System.Web.Http.Filters;
-using Tango.Transport.Web;
-
-namespace Tango.MachineService.Filters
-{
- public class MachineStudioLoginFilter : ActionFilterAttribute
- {
- public override void OnActionExecuting(HttpActionContext actionContext)
- {
- var json = actionContext.Request.Content.ReadAsStringAsync().Result;
- WebRequestSecureMessage msg = JsonConvert.DeserializeObject<WebRequestSecureMessage>(json);
-
- try
- {
- Controllers.MachineStudioController.TokensManager.Validate(msg.AccessToken);
- }
- catch (Exception ex)
- {
- throw new HttpResponseException(actionContext.Request.CreateErrorResponse(HttpStatusCode.Unauthorized, ex));
- }
-
- base.OnActionExecuting(actionContext);
- }
- }
-} \ No newline at end of file
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Filters/PPCLoginFilter.cs b/Software/Visual_Studio/Web/Tango.MachineService/Filters/PPCLoginFilter.cs
deleted file mode 100644
index 322023b7d..000000000
--- a/Software/Visual_Studio/Web/Tango.MachineService/Filters/PPCLoginFilter.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using Newtonsoft.Json;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Net;
-using System.Net.Http;
-using System.Security.Authentication;
-using System.Web;
-using System.Web.Http;
-using System.Web.Http.Controllers;
-using System.Web.Http.Filters;
-using Tango.Transport.Web;
-
-namespace Tango.MachineService.Filters
-{
- public class PPCLoginFilter : ActionFilterAttribute
- {
- public override void OnActionExecuting(HttpActionContext actionContext)
- {
- var json = actionContext.Request.Content.ReadAsStringAsync().Result;
- WebRequestSecureMessage msg = JsonConvert.DeserializeObject<WebRequestSecureMessage>(json);
-
- try
- {
- Controllers.PPCController.TokensManager.Validate(msg.AccessToken);
- }
- catch (Exception ex)
- {
- throw new HttpResponseException(actionContext.Request.CreateErrorResponse(HttpStatusCode.Unauthorized, ex));
- }
-
- base.OnActionExecuting(actionContext);
- }
- }
-} \ No newline at end of file
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/MachineServiceConfig.cs b/Software/Visual_Studio/Web/Tango.MachineService/MachineServiceConfig.cs
index 289fb08e2..a6aa71944 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/MachineServiceConfig.cs
+++ b/Software/Visual_Studio/Web/Tango.MachineService/MachineServiceConfig.cs
@@ -12,5 +12,6 @@ namespace Tango.MachineService
public static String TANGO_VERSIONS_CONTAINER => ConfigurationManager.AppSettings[nameof(TANGO_VERSIONS_CONTAINER)].ToString();
public static String MACHINE_STUDIO_VERSIONS_CONTAINER => ConfigurationManager.AppSettings[nameof(MACHINE_STUDIO_VERSIONS_CONTAINER)].ToString();
public static bool ENFORCE_MACHINE_STUDIO_VERSION => bool.Parse(ConfigurationManager.AppSettings[nameof(ENFORCE_MACHINE_STUDIO_VERSION)].ToString());
+ public static String JWT_TOKEN_SECRET => ConfigurationManager.AppSettings[nameof(JWT_TOKEN_SECRET)].ToString();
}
} \ No newline at end of file
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Tango.MachineService.csproj b/Software/Visual_Studio/Web/Tango.MachineService/Tango.MachineService.csproj
index 038849c72..6dbbe49ab 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/Tango.MachineService.csproj
+++ b/Software/Visual_Studio/Web/Tango.MachineService/Tango.MachineService.csproj
@@ -56,6 +56,9 @@
<Reference Include="Google.Protobuf, Version=3.4.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
<HintPath>..\..\packages\Google.Protobuf.3.4.1\lib\net45\Google.Protobuf.dll</HintPath>
</Reference>
+ <Reference Include="JWT, Version=5.0.0.0, Culture=neutral, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\JWT.5.0.0\lib\net46\JWT.dll</HintPath>
+ </Reference>
<Reference Include="Microsoft.Azure.Common, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<Reference Include="Microsoft.Azure.Common.NetFramework, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
<Reference Include="Microsoft.Azure.Management.Sql, Version=0.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
@@ -161,8 +164,8 @@
<HintPath>..\..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.WmiEnum.dll</HintPath>
</Reference>
<Reference Include="Microsoft.WindowsAzure.Storage, Version=4.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
- <Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
- <HintPath>..\..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
+ <Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
@@ -275,8 +278,7 @@
</Compile>
<Compile Include="App_Start\BundleConfig.cs" />
<Compile Include="App_Start\FilterConfig.cs" />
- <Compile Include="Filters\MachineStudioLoginFilter.cs" />
- <Compile Include="Filters\PPCLoginFilter.cs" />
+ <Compile Include="Filters\JwtTokenFilter.cs" />
<Compile Include="MachineServiceConfig.cs" />
<Compile Include="Controllers\MachineStudioController.cs" />
<Compile Include="Models\MachineStudioPendingUpload.cs" />
@@ -379,7 +381,7 @@
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
</WebProjectProperties>
</FlavorProperties>
- <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
+ <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
</VisualStudio>
</ProjectExtensions>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Web.config b/Software/Visual_Studio/Web/Tango.MachineService/Web.config
index 72c56b38f..fb10e615e 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/Web.config
+++ b/Software/Visual_Studio/Web/Tango.MachineService/Web.config
@@ -16,16 +16,17 @@
<add key="DB_ADDRESS" value="twine.database.windows.net" />
<add key="DB_USER_NAME" value="Roy" />
<add key="DB_PASSWORD" value="Aa123456" />
- <add key="DB_CATALOG" value="Tango" />
+ <add key="DB_CATALOG" value="Tango_DEV" />
<add key="STORAGE_ACCOUNT" value="DefaultEndpointsProtocol=https;AccountName=tangostorage;AccountKey=S4z/D+Yg6mwMis+bs/VpcDLA9yE1iZaYq23shQlRIi2KmM9E7JY8zdZjeAPOPdG3gONHoNDEpsgH6D4cqQ/bsA==;EndpointSuffix=core.windows.net" />
<add key="TENANT_ID" value="2ebd63a5-bc2f-41dc-9066-4409ed5e5dd4" />
<add key="CLIENT_ID" value="ec612854-7abc-457b-808a-5d0c5ba80c57" />
<add key="APP_SECRET" value="54)019A7wv+#86l*PQcQWYKu%fd4Dv!@G=VhCiDI5rD+H4BTH" />
- <add key="TANGO_VERSIONS_CONTAINER" value="tango-versions" />
- <add key="MACHINE_STUDIO_VERSIONS_CONTAINER" value="machine-studio-versions" />
+ <add key="TANGO_VERSIONS_CONTAINER" value="tango-versions-dev" />
+ <add key="MACHINE_STUDIO_VERSIONS_CONTAINER" value="machine-studio-versions-dev" />
<add key="DEPLOYMENT_SLOT" value="DEV" />
<add key="ENVIRONMENT_GROUP" value="Tango DEV" />
<add key="ENFORCE_MACHINE_STUDIO_VERSION" value="true" />
+ <add key="JWT_TOKEN_SECRET" value="GQDstcKsx0NHjPOuXOYg5MbeJ1XT0uFiwDVvVBrk" />
</appSettings>
<!--
For a description of web.config changes see http://go.microsoft.com/fwlink/?LinkId=235367.
@@ -59,7 +60,7 @@
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
- <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
+ <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/packages.config b/Software/Visual_Studio/Web/Tango.MachineService/packages.config
index e9f37dbe5..7bc1a3288 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/packages.config
+++ b/Software/Visual_Studio/Web/Tango.MachineService/packages.config
@@ -3,6 +3,7 @@
<package id="Antlr" version="3.4.1.9004" targetFramework="net45" />
<package id="EntityFramework" version="6.2.0" targetFramework="net461" />
<package id="Google.Protobuf" version="3.4.1" targetFramework="net46" />
+ <package id="JWT" version="5.0.0" targetFramework="net461" />
<package id="Microsoft.ApplicationInsights" version="2.2.0" targetFramework="net45" requireReinstallation="true" />
<package id="Microsoft.ApplicationInsights.Agent.Intercept" version="2.0.6" targetFramework="net45" />
<package id="Microsoft.ApplicationInsights.DependencyCollector" version="2.2.0" targetFramework="net45" />
@@ -25,7 +26,7 @@
<package id="Microsoft.SqlServer.SqlManagementObjects" version="140.17283.0" targetFramework="net461" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
<package id="Modernizr" version="2.6.2" targetFramework="net45" />
- <package id="Newtonsoft.Json" version="8.0.3" targetFramework="net46" />
+ <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net461" />
<package id="Respond" version="1.2.0" targetFramework="net45" />
<package id="System.Data.SQLite" version="1.0.108.0" targetFramework="net46" />
<package id="System.Data.SQLite.Core" version="1.0.108.0" targetFramework="net46" />