[{"data":1,"prerenderedAt":153},["ShallowReactive",2],{"project-senseanywhere":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"tags":10,"body":16,"_type":146,"_id":147,"_source":148,"_file":149,"_stem":150,"_extension":151,"sitemap":152},"/project/senseanywhere","project",false,"","Senseanywhere internship","This company makes hardware sensors to measure temperature, humidity, and anything else you might require. They have a nice dashboard on which you can view all your data but some of their partners had asked for API access. My internship assignment was;",[11,12,13,14,15],".NET","Azure","Azure AD","Azure API Management Gateway","Docker",{"type":17,"children":18,"toc":142},"root",[19,27,32,65,69,76,128,133],{"type":20,"tag":21,"props":22,"children":24},"element","h1",{"id":23},"senseanywhere-internship",[25],{"type":26,"value":8},"text",{"type":20,"tag":28,"props":29,"children":30},"p",{},[31],{"type":26,"value":9},{"type":20,"tag":33,"props":34,"children":35},"ul",{},[36,42,55,60],{"type":20,"tag":37,"props":38,"children":39},"li",{},[40],{"type":26,"value":41},"Starting on a new REST API to access their data",{"type":20,"tag":37,"props":43,"children":44},{},[45,47],{"type":26,"value":46},"Make an API gateway for their customers to interact with\n",{"type":20,"tag":33,"props":48,"children":49},{},[50],{"type":20,"tag":37,"props":51,"children":52},{},[53],{"type":26,"value":54},"With versioning",{"type":20,"tag":37,"props":56,"children":57},{},[58],{"type":26,"value":59},"Manage users authentication",{"type":20,"tag":37,"props":61,"children":62},{},[63],{"type":26,"value":64},"Research into the best technology to use",{"type":20,"tag":66,"props":67,"children":68},"tags",{},[],{"type":20,"tag":70,"props":71,"children":73},"h2",{"id":72},"technical-details",[74],{"type":26,"value":75},"Technical details",{"type":20,"tag":33,"props":77,"children":78},{},[79,90,100,110,120],{"type":20,"tag":37,"props":80,"children":81},{},[82,88],{"type":20,"tag":83,"props":84,"children":85},"strong",{},[86],{"type":26,"value":87},".NET for a new REST API:",{"type":26,"value":89}," They needed a new API for users to be able to access their data, this required to be versioned and authenticated and I did research on the best way toe achieve this. .NET was the best option to use within the company.",{"type":20,"tag":37,"props":91,"children":92},{},[93,98],{"type":20,"tag":83,"props":94,"children":95},{},[96],{"type":26,"value":97},"Azure:",{"type":26,"value":99}," The company already used Azure for everything, and my research showed that this would be the best option for deploying the API service I made.",{"type":20,"tag":37,"props":101,"children":102},{},[103,108],{"type":20,"tag":83,"props":104,"children":105},{},[106],{"type":26,"value":107},"Azure AD:",{"type":26,"value":109}," For their customers to access their data from the new REST API, user authentication would be required, I set up Azure AD for them, as research showed this was the best option. To migrate their existing users, I created a migrator API that would automatically convert their existing users when they tried to use the API.",{"type":20,"tag":37,"props":111,"children":112},{},[113,118],{"type":20,"tag":83,"props":114,"children":115},{},[116],{"type":26,"value":117},"Azure API Management Gateway:",{"type":26,"value":119}," As they needed a reverse proxy research was done and showed that for their use-case Azure API management Gateway was the perfect product, which was set up to use.",{"type":20,"tag":37,"props":121,"children":122},{},[123],{"type":20,"tag":83,"props":124,"children":125},{},[126],{"type":26,"value":127},"Docker was used for local development",{"type":20,"tag":28,"props":129,"children":130},{},[131],{"type":26,"value":132},"Graph showing how my assignment would have looked",{"type":20,"tag":28,"props":134,"children":135},{},[136],{"type":20,"tag":137,"props":138,"children":141},"img",{"alt":139,"src":140},"Arch_after_migrator-Final.drawio.png","/Arch_after_migrator-Final.drawio.png",[],{"title":7,"searchDepth":143,"depth":143,"links":144},2,[145],{"id":72,"depth":143,"text":75},"markdown","content:project:senseanywhere.md","content","project/senseanywhere.md","project/senseanywhere","md",{"loc":4},1737552096772]