我正在尝试开发一个简单的REST API.我仍然试图理解它的基本架构范例.我需要以下方面的帮助:
"资源"应该是名词,对吧?所以,我应该有"用户",而不是"getUser",对吗?
我在一些API中看到了这种方法:www.domain.com/users/(返回列表),www.domain.com/users/user(为用户做特定的事情).这种做法好吗?
在我看过的大多数例子中,输入和输出值通常只是名称/值对(例如color ='red').如果我想发送或返回比这更复杂的内容怎么办?我是否只被迫处理XML?
假设PUT到/ user /方法将新用户添加到系统.什么是输入参数的良好格式(假设所需的唯一字段是'用户名'和'密码')?如果用户成功,会有什么好的回应?如果用户失败了(我想返回描述性错误消息)该怎么办?
什么是一种简单的认证和授权方法?我想将大多数方法限制为已成功"登录"的用户.每次通话都会传递用户名/密码吗?传递一个被认为更安全的令牌(如果是,如何在到期方面实施等)?
在TeamCity中,有没有办法从构建配置中提取所有固定工件而不仅仅是最后一个固定构建?
编辑:感谢redsquares建议,我试图使用REST API与Nant解决这个问题.
我已经从获取固定版本更改为使用特定标记构建,因为这允许我根据需要配置多个列表.
我想我可以在Nant中使用get任务,如下所示,然后使用xmlpeek任务从xml文件中收集信息:
<get dest="tagged.xml" src="http://<teamcity_server>:1000/httpAuth/app/rest/buildTypes/id:bt103/builds?tag=release">
<proxy host="<teamcity_server>" port="1000">
<credentials username="uid" password="pwd"/>
</proxy>
</get>
Run Code Online (Sandbox Code Playgroud)
我很肯定uid和pwd是正确的.尽管如此,我仍然收到以下错误:
Unable to download 'http://<teamcity_server>:1000/httpAuth/app/rest
/buildTypes/id:bt101/builds?tag=release' to 'H:\<path>\tagged.xml'.
The remote server returned an error: (401) Unauthorized.
Run Code Online (Sandbox Code Playgroud)
Proxy任务配置错误吗?
我正在使用CodeIgniter的Rest Server(https://github.com/philsturgeon/codeigniter-restserver)扩展,我正在努力寻找如何在方法中设置授权级别的示例.
我已经尝试了以下所有方法:
public function index_get()
{
$this->methods['index']['level'] = 10;
$this->methods['level'] = 10;
$this->rest->level = 10;
$this->level = 10;
}
Run Code Online (Sandbox Code Playgroud)
没有运气.举例赞赏.谢谢!
我正在使用Luracast restler,我正在尝试通过实现iAuthenticate接口来实现一些身份验证.
问题是,我的身份验证代码需要查询我的数据库以检索用户私钥.该私钥将始终在url请求中提供(散列).
我想打开每个请求的一个数据库连接,所以我需要将db连接变量传递给实现iAuthenticate的类和处理所有请求的其他类.但我无法弄清楚如何将变量传递给实现iAuthenticate的类.
可能吗?
作为参考,这里是luracast示例
事先说.
我正在使用这个库和我的codeigniter休息服务.基本上,我有一个REST_controller,它是继承的,并使用该库检查有效的令牌.
我想要的只是提供一个API来保护一些API方法.现在,我忘了阅读oauth2的大部分规范和关于该库的教程.
任何人都可以帮助我,证明我可以实现的良好教程,示例和解释,一个简单的登录系统,然后,调用用户身份验证的方法.
提前致谢
大家好我创建了一个带有令牌认证的RESTful API(Rails 4 + Devise),我还用gem(rack-cors)管理CORS实现,但现在我想用angular.js的API
为此,我这样做:
var app = angular.module('models');
app.factory('Session',['$resource',function($resource){
var Session = $resource(
'http://api.creositios.dev/sessions/:id',
{},
{
create: { method: 'POST'},
delete: { method: 'DELETE', params: { id: '@id'} }
}
);
return Session;
}]);
Run Code Online (Sandbox Code Playgroud)
这是我的控制者
app = angular.module('controllers');
app.controller('SessionCtrl',['$scope','Session',function($scope,Session){
$scope.new_session = function(){
$scope.session = Session.create({email: 'developer.jimenez@gmail.com', password: '12345678'});
};
}]);
Run Code Online (Sandbox Code Playgroud)
到目前为止,我对实现没有问题.我的问题是不知道如何管理返回我工厂的令牌.
使用angular.js管理用户令牌的好方法是什么,并在angular.js中的不同控制器中验证用户?
这是我第一个使用令牌进行身份验证的应用.建议非常感谢!
javascript restful-authentication access-token angularjs angularjs-scope
我完全理解,如果有人发现我的问题非常基本,或者一直没有多大意义.我是新手,我正在尝试使用最新的.NET Framework 5和MVC 6来构建可以从Angular JS客户端使用的Web Api.这将允许我为它创建一个网站,以及通过Phonegap包装它的移动应用程序.所以请跟我一点.
我现在想要实现的是拥有一个Web API控制器,它接收登录请求并根据Cookie身份验证将结果返回给客户端(稍后客户端应存储此cookie并将其用于与服务器通信)
在Startup.cs中,我在ConfigureServices下添加:
// Add entity framework support
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<ApplicationDbContext>(options =>
{
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]);
});
// add ASP.NET Identity
services.AddIdentity<ApplicationUser, IdentityRole>(options => {
options.Password.RequireDigit = false;
options.Password.RequireLowercase = false;
options.Password.RequireUppercase = false;
options.Password.RequireNonLetterOrDigit = false;
options.Password.RequiredLength = 6;
})
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
Run Code Online (Sandbox Code Playgroud)在Startup.cs中的Configure下:
// Using the identity that technically should be calling the UseCookieAuthentication
app.UseIdentity();
Run Code Online (Sandbox Code Playgroud)现在,在Controller方法登录,我能够找到用户使用其电子邮件地址和UserManager:
// Verify that the model is valid according to the validation rules in the model itself.
// If …Run Code Online (Sandbox Code Playgroud) authentication restful-authentication asp.net-web-api asp.net-core-mvc
带有令牌身份验证+基于角色的授权的Jersey 2.22 API(我保护API的方式基于本文的公认答案:使用JAX-RS和Jersey进行基于REST令牌身份验证的最佳实践。最好在阅读之前阅读它试图理解我的问题):
这是我的web.xml:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- LISTENERS -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>JerseySpringServlet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>ca.toto.api.filters</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>ca.toto.api.restapi</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>ca.toto.api.filters.AuthenticationFilter;ca.toto.api.filters.AuthorizationFilter;com.toto.api.restapi.TaskRestService</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JerseySpringServlet</servlet-name>
<url-pattern>/filters/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>JerseySpringServlet</servlet-name>
<url-pattern>/restapi/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
当我调用任务 Web服务时,流程毫无问题地进入第一个过滤器(AuthenticationFilter)(@Priority(Priorities.AUTHENTICATION)),验证我的令牌,从解码的令牌中获取用户,然后将其注册为委托人然后传入第二个过滤器AuthorizationFilter(@Priority(Priorities.AUTHORIZATION)),在这里我从安全上下文中获取用户,获取其角色,然后检查他是否有权进行调用。如果是,请正常退出过滤器(如果否),请使用javax.ws.rs.container.ContainerRequestContext。abortWith方法发送状态为403的响应:
@Secured
@Provider
@Priority(Priorities.AUTHORIZATION)
public class AuthorizationFilter implements ContainerRequestFilter {
...
try {
boolean isAllowed = false;
// Check if the …Run Code Online (Sandbox Code Playgroud) 如何在AngularJS中生成HMAC-SHA256签名?
我找不到有关这个主题的任何消息来源.
我刚刚开始研究第三方API集成.在邮差客户端API调用中,我使用了标头中的授权密钥和带有令牌的承载.当我开始与我的C#代码集成时.我使用HttpBasicAuthenticator来验证带有访问令牌的API.但它会自动将"basic"作为String添加到令牌而不是我希望它附加"bearer".
你能帮帮我吗?我怎样才能做到这一点?
感谢帮助.谢谢
client.Authenticator = new HttpBasicAuthenticator(x, string.Format("Bearer {0}",ApiToken));
Run Code Online (Sandbox Code Playgroud) rest ×5
angularjs ×2
javascript ×2
.net ×1
access-token ×1
api ×1
asp.net-mvc ×1
c# ×1
codeigniter ×1
hmac ×1
httpresponse ×1
java ×1
jersey-2.0 ×1
levels ×1
nant ×1
oauth-2.0 ×1
php ×1
sha256 ×1
teamcity ×1
teamcity-5.0 ×1