我正在使用Play 2.0和Scala开发一个暴露一些REST API 的应用程序.这些API将由不同的应用程序,Web,移动或桌面使用,因此OAuth协议(OAuth2)似乎是最合适的.
此外,我最初会使用外部OAuth提供商,如Facebook.
我的问题是:授权单个REST调用的确切流程是什么?对于每次通话,我应该在服务器端期望什么以及我应该与外部提供商检查什么?
使用OAuth1我知道客户端发送了带有所有签名请求的令牌,但是我认为不是这样,我想如果签名没有签名是不可信的,因此我不认为这是流程.
我使用LFTP从服务器传输文件,遗憾的是无法识别PORT命令.我无法控制服务器(不知道服务器是什么),我必须使用主动模式.
这是命令行:
lftp -e 'debug 10;set ftp:passive-mode off; set ftp:auto-passive-mode no; ls; bye;' -u user,password ftp://ftp.site.com
Run Code Online (Sandbox Code Playgroud)
这是调试输出:
<--- 200 Using default language en_US
---> OPTS UTF8 ON
<--- 200 UTF8 set to on
---> OPTS MLST modify;perm;size;type;UNIX.group;UNIX.mode;UNIX.owner;
<--- 200 OPTS MLST modify;perm;size;type;UNIX.group;UNIX.mode;UNIX.owner;
---> USER xxxxx
<--- 331 Password required for xxxxx
---> PASS xxxxxx
<--- 230 User xxxxx logged in
---> PBSZ 0
<--- 200 PBSZ 0 successful
---> PROT P
<--- 200 Protection set to Private
---> PORT 172,16,133,11,146,168 …Run Code Online (Sandbox Code Playgroud) 我正在使用JAXB 2.2.2来解析一个简单的XML-REST流.这是一段代码:
JAXBContext jc = JAXBContext.newInstance( "com.example.entities" );
Unmarshaller u = jc.createUnmarshaller();
r = (Response )u.unmarshal( inputStream );
Run Code Online (Sandbox Code Playgroud)
ObjectFactory类:
@XmlRegistry
public class ObjectFactory {
public Response createRsp() {
return new Response();
}
}
Run Code Online (Sandbox Code Playgroud)
回复类:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="rsp")
@XmlType
public class Response { ... }
Run Code Online (Sandbox Code Playgroud)
"com.example.entities"必须包含ObjectFactory类或jaxb.index.我想使用ObjectFactory类来决定一些pojo初始化,但是从不使用这些类:Response类总是直接由class.newInstance()实例化.这有什么不对吗?
我正在尝试使用REST Spray实现完整的开发.有一个论点,我还没想到,我没有找到记录:如何保护路由的身份验证/授权?我只是通过请求的标头使用基于令牌的身份验证.
在AngularJS应用程序中,我对服务器URL进行$ http.post调用.这个url的成功响应是30x Redirect,我的问题是$ http.post严格遵循此重定向并在成功回调中返回最终调用的结果.我想拦截此重定向并手动将用户(更改浏览器URL)重定向到最终页面.有可能吗?
我需要在Play 2.1.x(Scala)应用程序中实现针对CSRF攻击的保护.我看到有一个过滤器play.filters.csrf.CSRFFilter但是找不到足够的文档来使用它.其他模块(例如https://github.com/orefalo/play2-authenticitytoken)似乎已过时/未维护.
我需要手动创建这些措施吗?
我有一系列验证函数,如果有的话,返回Option [Problem],如果没有找到验证问题,则返回None.我想编写一个调用每个验证函数的简单函数,停止并返回第一个not-None结果.
当然我可以在"java风格"中编写这个方法,但我想知道是否存在更好的方法.
编辑
这是最初的Java解决方案:
validate01(arg);
validate02(arg);
validate03(arg);
...
Run Code Online (Sandbox Code Playgroud)
如果出现问题,每种方法都会抛出异常.在我写Scala的时候,我会远离异常.
scala ×4
security ×2
angularjs ×1
csrf ×1
ftp ×1
ftp-client ×1
if-statement ×1
java ×1
javascript ×1
jaxb ×1
lftp ×1
oauth ×1
oauth-2.0 ×1
redirect ×1
spray ×1